/* Éditeur riche du back-office et mise en forme des contenus publiés. */
.editeur-riche-zone { background: #fff; border-radius: 0 0 .75rem .75rem; min-height: 14rem; font-size: .9rem; }
.editeur-riche-zone .ql-editor { min-height: 14rem; }
.editeur-riche-zone img { max-width: 100%; height: auto; }

.contenu-riche { color: #1e293b; line-height: 1.75; font-size: 1rem; overflow-wrap: anywhere; }
.contenu-riche > * + * { margin-top: 1rem; }
.contenu-riche h2 { font-size: 1.5rem; font-weight: 700; margin-top: 2rem; color: #0f172a; }
.contenu-riche h3 { font-size: 1.25rem; font-weight: 700; margin-top: 1.5rem; color: #0f172a; }
.contenu-riche h4 { font-size: 1.1rem; font-weight: 600; margin-top: 1.25rem; }
.contenu-riche ul { list-style: disc; padding-left: 1.5rem; }
.contenu-riche ol { list-style: decimal; padding-left: 1.5rem; }
.contenu-riche a { color: #0369a1; text-decoration: underline; }
.contenu-riche blockquote { border-left: 4px solid #7dd3fc; padding-left: 1rem; color: #475569; font-style: italic; }
.contenu-riche img { max-width: 100%; height: auto; border-radius: .75rem; }
.contenu-riche table { width: 100%; border-collapse: collapse; }
.contenu-riche th, .contenu-riche td { border: 1px solid #cbd5e1; padding: .5rem .75rem; text-align: left; }
.contenu-riche pre { background: #f1f5f9; padding: 1rem; border-radius: .75rem; overflow-x: auto; }

/* Champ leurre anti-robots : hors écran plutôt que display:none (que certains robots détectent). */
.champ-piege { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; opacity: 0; }

/* Mise en page publique compacte et fluide, y compris sans les utilitaires CDN. */
.public-content > :first-child { margin-top: 0; }
.public-content img,
.public-content iframe,
.public-content video { max-width: 100%; }
.public-content img,
.public-content video { height: auto; }
.document-pdf-frame {
  display: block;
  width: 100%;
  height: 70vh;
  min-height: 30rem;
  border: 0;
  background: #fff;
}
.public-content table { display: block; max-width: 100%; overflow-x: auto; }
.public-content pre { max-width: 100%; overflow-x: auto; }
.public-content input,
.public-content select,
.public-content textarea { min-width: 0; max-width: 100%; }
.public-content #menu-mobile { overflow-wrap: anywhere; }

.app-page-shell {
  display: flex;
  min-height: 0;
  flex: 1;
  flex-direction: column;
}

.public-content [data-card-navigation][data-card-loading] {
  position: relative;
  pointer-events: none;
}
.public-content [data-card-navigation][data-card-loading]::after {
  position: absolute;
  z-index: 4;
  inset: 0 0 auto;
  display: block;
  height: 3px;
  background: #000080;
  content: "";
  transform-origin: left center;
  animation: card-navigation-progress 1s ease-in-out infinite;
}
@keyframes card-navigation-progress {
  0% { transform: scaleX(.12); transform-origin: left center; }
  55% { transform: scaleX(.78); transform-origin: left center; }
  100% { transform: scaleX(.12); transform-origin: right center; }
}
@keyframes card-navigation-spin {
  to { transform: translateY(-50%) rotate(360deg); }
}

.public-navigation-progress {
  position: fixed;
  z-index: 9998;
  top: env(safe-area-inset-top, 0px);
  left: 0;
  width: 100%;
  height: 3px;
  overflow: hidden;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity 120ms ease, visibility 0s linear 120ms;
}
.public-navigation-progress[aria-hidden="false"] { opacity: 1; visibility: visible; transition-delay: 0s; }
.public-navigation-progress > span { display: block; width: 34%; height: 100%; border-radius: 999px; background: #000080; transform: translateX(-120%); }
.public-navigation-progress[aria-hidden="false"] > span { animation: public-progress-pulse 1.05s ease-in-out infinite; }
@keyframes public-progress-pulse {
  0% { transform: translateX(-120%) scaleX(.8); }
  55% { transform: translateX(120%) scaleX(1); }
  100% { transform: translateX(360%) scaleX(1.05); }
}

[data-button-loading="true"] { position: relative !important; padding-right: 2rem !important; }
[data-button-loading="true"]::after {
  position: absolute;
  top: 50%;
  right: .55rem;
  width: .9rem;
  height: .9rem;
  border: 2px solid currentColor;
  border-top-color: transparent;
  border-radius: 50%;
  content: "";
  animation: card-navigation-spin .65s linear infinite;
  transform: translateY(-50%);
}

.library-photo-hero {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  background-color: #000080;
  background-position: right 40%;
  background-size: auto 125%;
}
.library-photo-hero > * { position: relative; z-index: 1; }
.library-photo-hero::before {
  position: absolute;
  z-index: 0;
  inset: 0;
  background: linear-gradient(90deg, rgb(8 35 73 / 78%) 0%, rgb(13 53 103 / 64%) 40%, rgb(20 70 128 / 42%) 64%, rgb(35 90 150 / 18%) 100%);
  content: "";
  pointer-events: none;
}
.reader-dashboard-portrait {
  display: block;
  width: 5.5rem;
  height: 5.5rem;
  flex: 0 0 5.5rem;
  border: 2px solid rgb(255 255 255 / 82%);
  border-radius: 50%;
  background: rgb(255 255 255 / 14%);
  object-fit: cover;
  box-shadow: 0 8px 24px rgb(15 23 42 / 20%);
}
.reader-dashboard-portrait--initials {
  display: grid;
  place-items: center;
  color: #fff;
  font-size: 1.5rem;
  font-weight: 800;
}

.public-content [data-presentation-card] { border-radius: .75rem !important; }

.public-app-header {
  position: sticky;
  top: 0;
  z-index: 50;
  background: #fff;
  box-shadow: 0 2px 9px rgb(15 23 42 / 7%);
}
.public-app-header__inner {
  display: flex;
  width: min(100%, 52rem);
  min-height: 4rem;
  align-items: center;
  justify-content: space-between;
  gap: .7rem;
  margin-inline: auto;
  padding: .4rem .8rem;
}
.public-app-brand { display: flex; min-width: 0; align-items: center; gap: .45rem; color: #000080; font-size: .86rem; font-weight: 800; letter-spacing: .015em; text-decoration: none; }
.public-app-brand img { width: 2.15rem; height: 2.15rem; flex: 0 0 2.15rem; object-fit: contain; }
.public-app-brand span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.public-icon-button {
  display: grid;
  width: 2.75rem;
  height: 2.75rem;
  place-items: center;
  border: 0;
  border-radius: .7rem;
  background: transparent;
  color: #000080;
  cursor: pointer;
}
.public-icon-button:hover,
.public-icon-button:active { background: transparent; box-shadow: none; }
.public-menu-button { color: #000080; }
.public-menu-button:hover,
.public-menu-button:active { color: #15156d; }
.public-menu-button__icon { width: 1.55rem; height: 1.55rem; }
.public-icon-button:focus-visible,
.public-drawer__link:focus-visible,
.public-notification-item:focus-visible,
.home-search__filter:focus-visible,
.home-welcome-card__link:focus-visible {
  outline: 2px solid #000080;
  outline-offset: 2px;
}
.public-icon-button svg { width: 1.35rem; height: 1.35rem; }
.home-profilebar { position: relative; display: flex; min-height: 4rem; align-items: center; justify-content: space-between; gap: .75rem; }
.home-profilebar__identity { display: flex; min-width: 0; align-items: center; gap: .6rem; }
.home-profilebar__avatar {
  display: grid;
  width: 3.5rem;
  height: 3.5rem;
  flex: 0 0 3.5rem;
  overflow: hidden;
  place-items: center;
  border-radius: 50%;
  background: #000080;
  color: #fff;
  font-size: .75rem;
  font-weight: 700;
}
.home-profilebar__avatar img { width: 100%; height: 100%; object-fit: cover; }
.home-profilebar__avatar svg { width: 1.8rem; height: 1.8rem; stroke-width: 1.8; }
.home-profilebar__text { display: grid; min-width: 0; gap: .08rem; line-height: 1.2; }
.home-profilebar__hello { color: #64748b; font-size: .67rem; }
.home-profilebar__hello--visitor { color: #1e293b; font-size: .92rem; font-weight: 750; }
.home-profilebar__login { color: #000080; font-size: .72rem; font-weight: 750; text-decoration: none; }
.home-profilebar__login:hover { text-decoration: underline; }
.home-profilebar__name { overflow: hidden; color: #1e293b; font-size: .88rem; font-weight: 700; text-overflow: ellipsis; white-space: nowrap; }
.public-notifications-button { position: relative; }
.public-notifications-panel {
  position: absolute;
  z-index: 75;
  top: calc(100% + .35rem);
  right: 0;
  width: min(22rem, calc(100vw - 1.5rem));
  max-height: min(70vh, 30rem);
  overflow-y: auto;
  padding: 1rem;
  border-radius: .8rem;
  background: #fff;
  box-shadow: 0 8px 26px rgb(15 23 42 / 14%);
}
.public-notifications-panel[hidden] { display: none; }
.public-notifications-panel__heading { display: flex; align-items: flex-start; justify-content: space-between; gap: .75rem; margin-bottom: .8rem; }
.public-notifications-panel__heading h2 { color: #1e293b; font-size: .95rem; font-weight: 750; }
.public-notifications-panel__heading p { margin-top: .15rem; color: #64748b; font-size: .7rem; }
.public-notifications-panel__close { width: 2rem; height: 2rem; flex: 0 0 2rem; }
.public-notifications-panel__close svg { width: 1rem; height: 1rem; }
.public-notifications-list { display: grid; gap: .55rem; margin: 0; padding: 0; list-style: none; }
.public-notification-item { display: flex; align-items: flex-start; gap: .65rem; padding: .7rem; border-radius: .65rem; background: #f5f7f9; color: inherit; text-decoration: none; }
.public-notification-item:hover { background: #edf2f6; }
.public-notification-item__icon { display: grid; width: 2rem; height: 2rem; flex: 0 0 2rem; place-items: center; border-radius: 50%; background: #e8e8f4; color: #000080; }
.public-notification-item__icon svg { width: 1rem; height: 1rem; }
.public-notification-item__body { display: grid; min-width: 0; gap: .22rem; }
.public-notification-item__body strong { color: #1e293b; font-size: .75rem; line-height: 1.3; }
.public-notification-item__body > span { color: #526174; font-size: .68rem; line-height: 1.4; }
.public-notification-item__body time { color: #8491a0; font-size: .62rem; }
.public-notifications-empty { margin: 0; padding: .85rem; border-radius: .65rem; background: #f5f7f9; color: #5b6878; font-size: .75rem; line-height: 1.5; }
.public-notifications-all { display: inline-flex; min-height: 2.5rem; align-items: center; margin-top: .55rem; color: #000080; font-size: .75rem; font-weight: 700; text-decoration: none; }
.public-notifications-all:hover { text-decoration: underline; }

.public-drawer { position: fixed; z-index: 100; inset: 0; }
.public-drawer__backdrop { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; background: rgb(15 23 42 / 34%); cursor: pointer; }
.public-drawer__panel {
  position: absolute;
  inset: 0 auto 0 0;
  display: flex;
  width: min(23rem, 88vw);
  flex-direction: column;
  gap: .9rem;
  overflow-y: auto;
  padding: calc(1rem + env(safe-area-inset-top, 0px)) 1rem calc(1rem + env(safe-area-inset-bottom, 0px));
  border-radius: 0 .85rem .85rem 0;
  background: #fff;
  box-shadow: 8px 0 30px rgb(15 23 42 / 15%);
}
.public-drawer__heading { display: flex; align-items: center; justify-content: space-between; gap: .75rem; }
.public-drawer__profile { display: flex; min-width: 0; flex: 1; align-items: center; gap: .75rem; color: #1e293b; text-decoration: none; }
.public-drawer__profile:hover { color: #000080; }
.public-drawer__avatar { display: grid; width: 3rem; height: 3rem; flex: 0 0 3rem; overflow: hidden; place-items: center; border: 2px solid #fff; border-radius: 50%; background: #000080; color: #fff; object-fit: cover; box-shadow: 0 2px 8px rgb(15 23 42 / 16%); }
.public-drawer__avatar svg { width: 1.4rem; height: 1.4rem; stroke-width: 2; }
.public-drawer__avatar--initials { font-size: .9rem; font-weight: 800; }
.public-drawer__profile-copy { display: grid; min-width: 0; gap: .2rem; color: #718096; font-size: .67rem; line-height: 1.25; }
.public-drawer__profile-name,
.public-drawer__profile-copy > strong { overflow: hidden; color: #1e293b; font-size: .9rem; font-weight: 750; text-overflow: ellipsis; white-space: nowrap; }
.public-drawer__profile--guest .public-drawer__profile-copy > span { color: #000080; font-weight: 700; }
.public-drawer__subtitle { margin-top: -.65rem; padding-left: 3.75rem; color: #7a8794; font-size: .6rem; font-weight: 600; line-height: 1.35; }
.public-drawer__close { width: 2.5rem; height: 2.5rem; }
.public-drawer__navigation { display: grid; gap: .15rem; }
.public-drawer__link { display: flex; min-height: 2.55rem; align-items: center; gap: .7rem; padding: .45rem .6rem; border-radius: .55rem; color: #344255; font-size: .78rem; font-weight: 600; text-decoration: none; }
.public-drawer__link:hover,
.public-drawer__link:active { background: transparent; }
.public-drawer__link svg { width: 1rem; height: 1rem; flex: 0 0 1rem; color: #718196; }
.public-drawer__link--secondary { min-height: 2.2rem; color: #64748b; font-size: .72rem; font-weight: 500; }
.public-drawer__account { display: grid; gap: .2rem; padding: .45rem; border-radius: .7rem; background: #f5f7f9; }
.public-drawer__account form { margin: 0; }
.public-drawer__account-shortcuts { display: grid; gap: .08rem; margin-block: .2rem; padding-block: .3rem; border-top: 1px solid #e2e8f0; border-bottom: 1px solid #e2e8f0; }
.public-drawer__account-shortcuts .public-drawer__account-link { min-height: 2.25rem; padding-left: .55rem; font-size: .7rem; }
.public-drawer__account-link { display: flex; width: 100%; min-height: 2.5rem; align-items: center; gap: .65rem; padding: .45rem .5rem; border: 0; border-radius: .5rem; background: transparent; color: #334155; font: inherit; font-size: .74rem; font-weight: 650; text-align: left; text-decoration: none; cursor: pointer; }
.public-drawer__account-link:hover,
.public-drawer__account-link:active { background: transparent; }
.public-drawer__account-link svg { width: 1rem; height: 1rem; color: #54718b; }
.public-drawer__account-link--staff { color: #000080; }
.public-drawer__install[hidden],
.pwa-install-banner[hidden] { display: none !important; }
.public-drawer__install { display: grid; gap: .25rem; }
.public-drawer__install-button { background: #e8e8f4; color: #000080; }
.public-drawer__install-button:hover { background: #dedeee; }
.public-drawer__install > p { margin: 0 .55rem; color: #64748b; font-size: .68rem; line-height: 1.45; }
.public-drawer__library { display: grid; gap: .45rem; padding: .15rem .25rem; }
.public-drawer__library h3 { margin-bottom: .1rem; color: #526174; font-size: .7rem; font-weight: 750; }
.public-drawer__library > div,
.public-drawer__library > p { display: flex; align-items: flex-start; gap: .55rem; margin: 0; color: #64748b; font-size: .68rem; line-height: 1.45; }
.public-drawer__library > div > svg,
.public-drawer__library > p > svg { width: .9rem; height: .9rem; flex: 0 0 .9rem; margin-top: .08rem; color: #7890a5; }
.public-drawer__library ul { display: grid; gap: .1rem; margin: 0; padding: 0; list-style: none; }
.public-drawer__library a { color: #526174; text-decoration: none; }
.public-drawer__library a:hover { text-decoration: underline; }
.public-drawer__language { display: flex; align-items: center; justify-content: space-between; gap: .75rem; margin-top: auto; padding-top: .4rem; color: #64748b; font-size: .7rem; }
.public-drawer__language select { min-height: 2.5rem; max-width: 10rem; padding: .4rem .6rem; border: 0; border-radius: .55rem; background: #f2f5f7; color: #334155; font: inherit; }

.pwa-install-banner { display: flex; width: min(calc(100% - 1.6rem), 42rem); min-height: 3.2rem; align-items: center; justify-content: space-between; gap: .65rem; margin: .55rem auto .25rem; padding: .5rem .65rem; border-radius: .7rem; background: #000080; color: #fff; }
.pwa-install-banner__message { display: flex; min-width: 0; align-items: center; gap: .55rem; }
.pwa-install-banner__icon { display: grid; width: 2rem; height: 2rem; flex: 0 0 2rem; place-items: center; color: #fff; }
.pwa-install-banner__icon svg { width: 1rem; height: 1rem; }
.pwa-install-banner__message h2 { overflow: hidden; font-size: .7rem; font-weight: 750; line-height: 1.25; text-overflow: ellipsis; white-space: nowrap; }
.pwa-install-banner__message p { margin-top: .08rem; color: #fff; font-size: .62rem; line-height: 1.3; }
.pwa-install-banner__message [data-pwa-install-help] { margin-top: .2rem; }
.pwa-install-banner__message [hidden] { display: none; }
.pwa-install-banner__button { display: inline-flex; min-height: 2rem; flex: 0 0 auto; align-items: center; justify-content: center; padding: .35rem .7rem; border: 0; border-radius: .5rem; background: #fff; color: #000080; font: inherit; font-size: .66rem; font-weight: 700; cursor: pointer; }
.pwa-install-banner__button:hover { background: #e8e8f4; }
.pwa-install-banner__button:focus-visible { outline: 2px solid #000080; outline-offset: 2px; }

.public-home { background: #f4f4f8 !important; }
.public-home .home-app-page { padding: 1.1rem 1rem 1.5rem; }
.public-home .home-app-content { display: grid; width: min(100%, 42rem); gap: .9rem; margin-inline: auto; }
.home-search { display: grid; grid-template-columns: minmax(0, 1fr) 2.85rem; gap: .55rem; }
.home-search__form { min-height: 2.85rem; border-radius: .7rem; background: #fff; }
.home-search__filter { display: grid; min-height: 2.85rem; place-items: center; background: transparent; color: #000080; text-decoration: none; -webkit-tap-highlight-color: transparent; }
.home-search__form { display: flex; align-items: center; gap: .55rem; padding: 0 .8rem; }
.home-search__form > svg { width: 1.15rem; height: 1.15rem; flex: 0 0 1.15rem; color: #718096; }
.home-search__form input { width: 100%; min-width: 0; height: 100%; padding: 0; border: 0; outline: 0; background: transparent; color: #243447; font: inherit; font-size: .78rem; }
.home-search__form input::placeholder { color: #8491a0; opacity: 1; }
.home-search__form:focus-within { outline: 2px solid #000080; outline-offset: 1px; }
.home-search__filter:hover,
.home-search__filter:active { background: transparent; box-shadow: none; }
.home-search__filter svg { width: 1.2rem; height: 1.2rem; }
.home-welcome-card { position: relative; isolation: isolate; display: flex; min-height: 5rem; align-items: center; overflow: hidden; padding: .55rem .75rem; border-radius: .75rem; background: #000080; color: #fff; }
.home-welcome-card__copy { position: relative; z-index: 2; width: 100%; min-width: 0; flex: 1 1 auto; }
.home-welcome-card h1 { max-width: 32rem; margin: 0; color: #fff; font-size: .82rem; font-weight: 750; line-height: 1.2; overflow-wrap: normal; word-break: normal; }
.home-welcome-card__link { display: inline-flex; min-height: 1.4rem; align-items: center; gap: .25rem; margin-top: .22rem; padding: 0; background: transparent; color: #fff; font-size: .65rem; font-weight: 750; text-decoration: none; }
.home-welcome-card__link:hover { color: #fff; text-decoration: underline; }
.home-welcome-card__link svg { width: .85rem; height: .85rem; }
.home-welcome-card__media { position: absolute; z-index: 0; inset: 0; overflow: hidden; pointer-events: none; }
.home-welcome-card__media::after { position: absolute; inset: 0; background: linear-gradient(90deg, #000080 0%, #000080 18%, rgb(0 0 128 / 96%) 38%, rgb(0 0 128 / 84%) 60%, rgb(0 0 128 / 30%) 100%); content: ""; }
.public-content .home-welcome-card__image { position: absolute; inset: 0; display: block; width: 100%; max-width: none; height: 100%; object-fit: cover; object-position: center; }
.home-feed { display: grid; gap: .7rem; }
.home-feed__toolbar { display: flex; align-items: center; justify-content: space-between; gap: .5rem; }
.home-feed__tabs { display: flex; align-items: center; gap: .4rem; }
.home-feed__tab { min-height: 2.1rem; padding: .45rem .8rem; border: 0; border-radius: 999px; background: #e8eef3; color: #526579; font: inherit; font-size: .72rem; font-weight: 600; cursor: pointer; }
.home-feed__tab.is-active { background: #000080; color: #fff; }
.home-feed__tab:focus-visible,
.home-feed__sort:focus-visible { outline: 2px solid #000080; outline-offset: 2px; }
.home-feed__sort { display: grid; width: 2.2rem; height: 2.2rem; flex: 0 0 2.2rem; place-items: center; border: 0; background: transparent; color: #000080; cursor: pointer; -webkit-tap-highlight-color: transparent; }
.home-feed__sort:hover,
.home-feed__sort:active { background: transparent; box-shadow: none; }
.home-feed__sort svg { width: 1.05rem; height: 1.05rem; }
.home-feed__panel[hidden] { display: none; }
.home-feed__list { display: grid; gap: .75rem; }
.home-feed-card { overflow: hidden; border: 0; border-radius: .8rem; background: #fff; }
.home-feed-card__header { display: flex; align-items: center; gap: .55rem; padding: .75rem .85rem .1rem; }
.home-feed-card__avatar,
.publication-card__avatar { display: grid; width: 2rem; height: 2rem; flex: 0 0 2rem; overflow: hidden; place-items: center; border-radius: 50%; background: #fff; }
.publication-card__avatar { width: 2.25rem; height: 2.25rem; flex-basis: 2.25rem; }
.home-feed-card__avatar img,
.publication-card__avatar img { display: block; width: 100%; height: 100%; object-fit: cover; }
.home-feed-card__publisher { display: grid; min-width: 0; gap: .08rem; }
.home-feed-card__publisher strong { overflow: hidden; color: #28394a; font-size: .72rem; font-weight: 700; text-overflow: ellipsis; white-space: nowrap; }
.home-feed-card__publisher > span { color: #748292; font-size: .63rem; }
.home-feed-card__content { display: block; padding: .55rem .85rem .7rem; color: inherit; text-decoration: none; }
.home-feed-card__content h2 { color: #253648; font-size: .82rem; font-weight: 700; line-height: 1.38; }
.home-feed-card__content p { margin-top: .3rem; color: #526174; font-size: .7rem; line-height: 1.45; }
.home-feed-card__content > img { display: block; width: 100%; max-height: 13rem; margin-top: .65rem; border-radius: .55rem; object-fit: cover; }
.home-feed-card__actions { padding: 0 .7rem .35rem; }
.home-feed-card .publication-actions > .flex { min-height: 2.55rem; border: 0; color: #536273; }
.home-feed-card .publication-actions [data-reaction-feedback],
.home-feed-card .publication-actions form[data-comment-form] { border: 0; }
.home-feed-card .publication-actions button,
.home-feed-card .publication-actions summary { min-height: 2.35rem; padding-inline: .5rem; border-radius: .5rem; font-size: .68rem; }
.home-feed-card .publication-actions button:hover,
.home-feed-card .publication-actions summary:hover,
.home-feed-card .publication-actions button:active,
.home-feed-card .publication-actions summary:active { background: transparent; box-shadow: none; }
.home-feed-document__preview { display: flex; min-height: 4.2rem; align-items: center; gap: .65rem; margin-top: .65rem; padding: .7rem .85rem; border-radius: .55rem; background: #eef2f5; color: #78899a; }
.home-feed-document__preview svg { width: 1.5rem; height: 1.5rem; flex: 0 0 1.5rem; color: #000080; }
.home-feed-document__preview span { color: #526579; font-size: .68rem; font-weight: 650; }
.home-feed-document__footer { display: flex; min-height: 2.75rem; align-items: center; justify-content: space-between; gap: .5rem; padding: 0 .85rem .65rem; color: #748292; font-size: .65rem; }
.home-feed-document__footer a { display: inline-flex; min-height: 2rem; align-items: center; gap: .25rem; color: #000080; font-size: .68rem; font-weight: 700; text-decoration: none; }
.home-feed-document__footer a:hover { text-decoration: underline; }
.home-feed-document__footer svg { width: .85rem; height: .85rem; }
.home-feed-empty { display: grid; min-height: 7rem; place-items: center; align-content: center; gap: .45rem; padding: 1rem; border-radius: .8rem; background: #fff; color: #718096; text-align: center; }
.home-feed-empty > span { display: grid; width: 2.2rem; height: 2.2rem; place-items: center; border-radius: 50%; background: #e8e8f4; color: #000080; }
.home-feed-empty svg { width: 1.05rem; height: 1.05rem; }
.home-feed-empty p { font-size: .72rem; }
.home-feed__more { display: flex; justify-content: center; padding-top: .05rem; }
.home-feed__more a { display: inline-flex; min-height: 2rem; align-items: center; gap: .35rem; color: #000080; font-size: .72rem; font-weight: 650; text-decoration: none; }
.home-feed__more a:hover { color: #00005c; text-decoration: underline; }
.home-feed__more svg { width: .9rem; height: .9rem; }

.infinite-scroll-controls { display: grid; justify-items: center; gap: .75rem; padding-top: .75rem; }
.infinite-scroll-skeleton { display: grid; width: 100%; gap: .75rem; }
.infinite-scroll-skeleton[hidden] { display: none; }
.infinite-scroll-skeleton__card { display: grid; grid-template-columns: 2rem minmax(0, 1fr); align-content: start; gap: .55rem .65rem; min-height: 7rem; padding: .8rem; border-radius: .8rem; background: #fff; }
.infinite-scroll-skeleton__pulse { display: block; border-radius: 999px; background: linear-gradient(100deg, #c8cedb 20%, #e6e9ef 40%, #c8cedb 60%); background-size: 220% 100%; animation: infinite-skeleton-shimmer 1.2s ease-in-out infinite; }
.infinite-scroll-skeleton__avatar { width: 2rem; height: 2rem; grid-row: span 2; border-radius: 50%; }
.infinite-scroll-skeleton__line { width: min(60%, 10rem); height: .55rem; margin-top: .15rem; }
.infinite-scroll-skeleton__title { width: min(82%, 20rem); height: .7rem; grid-column: 1 / -1; margin-top: .2rem; }
.infinite-scroll-skeleton__body { width: 100%; height: 1.5rem; grid-column: 1 / -1; }
@keyframes infinite-skeleton-shimmer { to { background-position: -220% 0; } }
.infinite-scroll-status:empty { display: none; }
.infinite-scroll-status { color: #64748b; font-size: .72rem; text-align: center; }
.infinite-scroll-more { display: inline-flex; min-height: 2.4rem; align-items: center; justify-content: center; padding: .4rem .9rem; border: 0; border-radius: .55rem; background: #000080; color: #fff; font: inherit; font-size: .72rem; font-weight: 700; cursor: pointer; }
.infinite-scroll-more:hover { background: #00005c; }
.infinite-scroll-more[hidden] { display: none; }
.infinite-scroll-sentinel { width: 100%; height: 1px; }
body.has-infinite-scroll [data-infinite-scroll-fallback] { display: none; }

.public-home .home-secondary-section { width: min(100%, 72rem); }
.public-content [data-presentation-card] { box-shadow: none !important; }
.public-home .home-secondary-section [data-presentation-card] { border: 0 !important; border-radius: .75rem !important; }
.public-home .home-secondary-section .publication-actions > .flex { border: 0; }
.public-home .home-secondary-section h2 { color: #28394a; }

.mobile-tabbar { display: none; }
.home-stats-band {
  border-block: 1px solid #e2e8f0;
  background: #fff;
}
.home-stats {
  display: flex;
  width: min(100%, 72rem);
  margin: 0 auto;
  padding: .9rem 1rem;
}
.home-stats__item {
  display: flex;
  min-width: 0;
  flex: 1 1 0;
  align-items: baseline;
  justify-content: center;
  gap: .35rem;
  padding-inline: .75rem;
  text-align: center;
}
.home-stats__item + .home-stats__item { border-left: 1px solid #e2e8f0; }
.home-stats__label { color: #64748b; font-size: .7rem; line-height: 1.25; }
.home-stats__value { max-width: 100%; overflow: hidden; color: #312e81; font-size: clamp(1.05rem, 2.6vw, 1.5rem); font-weight: 800; line-height: 1.15; text-overflow: ellipsis; white-space: nowrap; }
.catalogue-filter-band {
  border-block: 1px solid #e2e8f0;
  background: #fff;
}
.catalogue-filter-form label {
  display: block;
  margin-bottom: .35rem;
  color: #475569;
  font-size: .75rem;
  font-weight: 600;
}
.catalogue-filter-form input,
.catalogue-filter-form select { min-height: 2.75rem; }
.catalogue-filter-form__actions {
  display: flex;
  grid-column: 1 / -1;
  flex-wrap: wrap;
  align-items: end;
  gap: .625rem;
  margin-top: .125rem;
}
.catalogue-filter-form__actions > * { flex: 0 1 auto; }
.publication-actions [data-like-button][aria-pressed="true"] { color: #be123c; }
.public-content .publication-actions [data-like-button][aria-pressed="true"] { color: #0866ff !important; }
.publication-actions [data-like-button][aria-pressed="true"] svg { fill: currentColor; }
.publication-actions summary:focus-visible,
.publication-actions button:focus-visible,
.publication-actions input:focus-visible,
.publication-actions textarea:focus-visible { outline: 2px solid #0369a1; outline-offset: 2px; }
.publication-actions [data-card-share] { overflow-wrap: anywhere; }

@media (max-width: 1279px) {
  body.public-content {
    height: 100vh;
    height: 100dvh;
    min-height: 0;
    overflow: hidden;
    padding-bottom: 0;
  }
  body.public-content > header {
    position: fixed;
    z-index: 50;
    inset: 0 0 auto;
    padding-top: env(safe-area-inset-top, 0px);
  }
  body.public-content > header > div {
    min-height: 4rem;
  }
  body.public-content > header .leading-tight > span:last-child {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  body.public-content > .app-page-shell {
    position: fixed;
    z-index: 1;
    inset-inline: 0;
    top: calc(4.0625rem + env(safe-area-inset-top, 0px));
    bottom: calc(4.125rem + env(safe-area-inset-bottom, 0px));
    display: block;
    min-height: 0;
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior-y: contain;
    -webkit-overflow-scrolling: touch;
    scroll-padding-top: .75rem;
    scrollbar-gutter: stable;
    background: #f4f4f8;
  }
  .mobile-tabbar {
    position: fixed;
    z-index: 40;
    inset-inline: 0;
    bottom: 0;
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: .125rem;
    padding: .3rem .5rem calc(.3rem + env(safe-area-inset-bottom, 0px));
    background: #fff;
    box-shadow: none;
  }
  .mobile-tabbar__item {
    display: flex;
    min-width: 0;
    min-height: 3.25rem;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    gap: .15rem;
    border: 0;
    border-radius: .6rem;
    background: transparent;
    color: #64748b;
    font-size: .65rem;
    font-weight: 600;
    line-height: 1;
    text-decoration: none;
    -webkit-tap-highlight-color: transparent;
    transition: color 150ms ease, background-color 150ms ease;
  }
  .mobile-tabbar__item::before { content: ""; position: absolute; inset: 0; }
  .mobile-tabbar__item { position: relative; }
  .mobile-tabbar__item > * { pointer-events: none; }
  .mobile-tabbar__item svg { width: 1.2rem; height: 1.2rem; }
  .mobile-tabbar__item svg * { pointer-events: none; }
  .mobile-tabbar__item.is-active { color: #000080; background: transparent; font-weight: 700; }
  .mobile-tabbar__item.is-active svg { fill: currentColor; stroke-width: 2.25; }
  .mobile-tabbar__item.is-active[data-tab="profil"] svg { fill: none; stroke-width: 2.4; }
  .mobile-tabbar__item.is-active[data-tab="profil"] svg circle { fill: currentColor; }
  .mobile-tabbar__item:active { background: transparent; box-shadow: none; }
  .mobile-tabbar__item:focus-visible { outline: 2px solid #000080; outline-offset: -2px; }
  body.public-content { padding-bottom: calc(4.1rem + env(safe-area-inset-bottom, 0px)); }
  .public-home .home-app-page { padding-top: .9rem; }
}

@media (min-width: 640px) and (max-width: 1279px) {
  body.public-content > header > div { min-height: 4.25rem; }
  .public-app-header__inner { min-height: 4.25rem; }
  body.public-content > .app-page-shell {
    top: calc(4.3125rem + env(safe-area-inset-top, 0px));
  }
}

@media (max-width: 639px) {
  .library-photo-hero { background-position: right 42%; background-size: auto 110%; }
  .library-photo-hero::before { background: linear-gradient(90deg, rgb(8 35 73 / 82%) 0%, rgb(13 53 103 / 68%) 56%, rgb(20 70 128 / 44%) 100%); }
  .reader-dashboard-portrait { width: 4.25rem; height: 4.25rem; flex-basis: 4.25rem; }
  .public-app-header__inner { gap: .4rem; padding-inline: .65rem; }
  .public-greeting { gap: .5rem; }
  .public-greeting__avatar { width: 2.55rem; height: 2.55rem; flex-basis: 2.55rem; }
  .public-greeting__name { font-size: .82rem; }
  .public-notifications-panel { right: .6rem; }
  .public-home .home-app-page { padding-inline: .8rem; }
  .home-welcome-card { min-height: 4.7rem; gap: .45rem; padding: .5rem .6rem; }
  .public-content .home-welcome-card h1 { max-width: none; font-size: .75rem; line-height: 1.2; overflow-wrap: normal; word-break: normal; }
  .pwa-install-banner { width: calc(100% - 1rem); gap: .4rem; margin-top: .35rem; padding: .45rem .5rem; }
  .pwa-install-banner__message { gap: .4rem; }
  .pwa-install-banner__icon { width: 1.8rem; height: 1.8rem; flex-basis: 1.8rem; }
  .pwa-install-banner__message h2 { font-size: .64rem; }
  .pwa-install-banner__message p { font-size: .58rem; }
  .pwa-install-banner__button { min-height: 1.8rem; padding-inline: .55rem; font-size: .62rem; }
  .public-content .contenu-riche { font-size: .9375rem; line-height: 1.65; }
  .public-content .contenu-riche > * + * { margin-top: .75rem; }
  .public-content .contenu-riche h2 { margin-top: 1.25rem; font-size: 1.25rem; }
  .public-content .contenu-riche h3 { margin-top: 1rem; font-size: 1.125rem; }
  .public-content .contenu-riche ul,
  .public-content .contenu-riche ol { padding-left: 1.25rem; }
  .public-content .contenu-riche th,
  .public-content .contenu-riche td { padding: .375rem .5rem; }
  .public-content h1 { font-size: clamp(1.6rem, 7vw, 2rem); line-height: 1.15; }
  .public-content article > .contenu-riche,
  .public-content article > .contenu-riche + * { overflow-wrap: anywhere; }
  .public-content .filtre-debordant { margin-inline: -1rem; padding-inline: 1rem; overflow-x: auto; }
  .home-stats { padding: .8rem .75rem; }
  .home-stats__item { padding-inline: .35rem; }
  .home-stats__item { flex-direction: column; align-items: center; gap: .2rem; }
  .home-stats__label { min-height: 1.55em; font-size: .6rem; }
  .home-stats__value { font-size: clamp(.95rem, 4vw, 1.2rem); }
  .catalogue-filter-form__actions > * { flex: 1 1 9rem; }
}


@media (prefers-reduced-motion: reduce) {
  .mobile-tabbar__item { transition: none; }
}
