/* Shared UniPay ecosystem navigation. The source links remain real anchors. */
:root {
  --unipay-menu-up-top: calc(env(safe-area-inset-top, 0px) + 18px);
  --unipay-menu-up-right: calc(env(safe-area-inset-right, 0px) + 12px);
  --unipay-menu-up-left-limit: 12px;
  --unipay-menu-up-toggle-width: 148px;
  --unipay-menu-up-height: 50px;
  --unipay-menu-up-panel-width: 240px;
}

/* Prevent the historical text bar from painting before its transformation. */
html.unipay-menu-up-loading nav.menu:not(.unipay-menu-up-nav) {
  opacity: 0 !important;
  visibility: hidden !important;
  pointer-events: none !important;
}

/* Keep the source header hidden until the shared menu has taken ownership of
   its navigation. This removes the historical top-bar flash on reload. */
html.unipay-shell-loading body > header:has(> nav.menu),
html.unipay-shell-loading body > header > nav.menu,
html.unipay-shell-loading body > .topbar,
html.unipay-shell-loading body > .navbar,
html.unipay-shell-loading body > .fut-topbar,
html.unipay-shell-loading body > .fut-secondary-bar {
  visibility: hidden !important;
  opacity: 0 !important;
  pointer-events: none !important;
}

html:not(.unipay-menu-up-ready) body > header:has(> nav.menu),
html:not(.unipay-menu-up-ready) body > header > nav.menu,
html:not(.unipay-menu-up-ready) body > .topbar,
html:not(.unipay-menu-up-ready) body > .navbar,
html:not(.unipay-menu-up-ready) body > .fut-topbar,
html:not(.unipay-menu-up-ready) body > .fut-secondary-bar:not(#unipay-shell-brand),
html:not(.unipay-menu-up-ready) nav.menu:not(.unipay-menu-up-nav),
html:not(.unipay-menu-up-ready) .menu:not(.unipay-menu-up-nav):not(#unipay-menu-up) {
  display: none !important;
  visibility: hidden !important;
  opacity: 0 !important;
  pointer-events: none !important;
}

/* Pages historiques : masquer les marques locales avant la prise en charge
   du bandeau commun pour supprimer le flash de la double identité. */
html.unipay-shell-loading body.unipay-page-examens .exam-unipay-brand,
html.unipay-shell-loading body.unipay-page-university > header .brand,
html:not(.unipay-menu-up-ready) body.unipay-page-examens .exam-unipay-brand,
html:not(.unipay-menu-up-ready) body.unipay-page-university > header .brand {
  display: none !important;
  visibility: hidden !important;
  opacity: 0 !important;
  pointer-events: none !important;
}

html.unipay-menu-up-ready {
  --unipay-menu-up-clearance: calc(var(--unipay-menu-up-toggle-width) + 34px);
}

#unipay-menu-up {
  position: fixed;
  top: var(--unipay-menu-up-top);
  right: var(--unipay-menu-up-right);
  z-index: 100020;
  display: flex;
  flex-direction: row;
  align-items: flex-start;
  justify-content: flex-end;
  gap: 7px;
  width: auto;
  max-width: calc(100vw - var(--unipay-menu-up-left-limit) - var(--unipay-menu-up-right));
  height: var(--unipay-menu-up-height);
  pointer-events: none;
  isolation: isolate;
  contain: layout style;
}

/* Canonical single title; it is fixed and therefore never contributes to the
   document flow. The button remains clickable through the transparent shell. */
#unipay-shell-brand {
  position: fixed !important;
  top: calc(env(safe-area-inset-top, 0px) + 12px) !important;
  left: calc(env(safe-area-inset-left, 0px) + 12px) !important;
  width: max-content !important;
  max-width: min(48vw, 360px) !important;
  height: var(--unipay-menu-up-height, 50px) !important;
  min-height: var(--unipay-menu-up-height, 50px) !important;
  margin: 0 !important;
  padding: 0 !important;
  transform: none !important;
  align-items: center !important;
  justify-content: flex-start !important;
  border: 0 !important;
  border-radius: 0 !important;
  background: transparent !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
  mix-blend-mode: normal !important;
  z-index: 100010 !important;
  display: flex !important;
  visibility: visible !important;
  opacity: 1 !important;
  pointer-events: none !important;
}

#unipay-shell-brand .unipay-brand-secondary {
  appearance: none;
  -webkit-appearance: none;
  border: 0;
  cursor: pointer;
  position: relative;
  display: inline-flex !important;
  align-items: center;
  gap: 8px;
  width: max-content;
  max-width: 100%;
  min-height: 38px;
  margin: 0;
  padding: 0 !important;
  visibility: visible !important;
  opacity: 1 !important;
  pointer-events: auto !important;
  font: inherit;
  /* Taille demandée : 34 px = exactement 2 × la taille canonique de 17 px.
     Le shell reste fixé aux mêmes coordonnées et les animations par lettre
     conservent leurs délais, couleurs et transformations. */
  font-size: 34px !important;
  font-weight: 900;
  letter-spacing: .02em;
  text-align: left;
  color: #e6f7ff;
  background: transparent !important;
  mix-blend-mode: normal !important;
  text-shadow: 0 0 12px rgba(0, 238, 255, .28);
}

#unipay-shell-brand .logo-mark-secondary {
  position: relative;
  display: inline-grid;
  place-items: center;
  box-sizing: border-box;
  flex: 0 0 38px;
  width: 38px;
  height: 38px;
  overflow: hidden;
  isolation: isolate;
  border: 1px solid rgba(120, 246, 255, .72);
  border-radius: 11px;
  background: linear-gradient(145deg, rgba(3, 22, 48, .98), rgba(8, 5, 31, .98));
  box-shadow:
    0 0 0 1px rgba(255, 255, 255, .08) inset,
    0 0 14px rgba(0, 238, 255, .45),
    0 7px 18px rgba(0, 0, 0, .34);
  transform: translateZ(0);
}

#unipay-shell-brand .logo-mark-secondary::before {
  content: '';
  position: absolute;
  z-index: 3;
  inset: -35% auto -35% -55%;
  width: 34%;
  pointer-events: none;
  background: linear-gradient(90deg, transparent, rgba(211, 255, 255, .78), transparent);
  filter: blur(.4px);
  transform: skewX(-18deg);
  animation: unipayBrandIconScan 4.8s cubic-bezier(.45, 0, .2, 1) infinite;
}

#unipay-shell-brand .logo-mark-secondary::after {
  content: '';
  position: absolute;
  z-index: 4;
  inset: 2px;
  pointer-events: none;
  border: 1px solid rgba(185, 252, 255, .28);
  border-radius: 8px;
  box-shadow: 0 0 8px rgba(71, 236, 255, .18) inset;
  animation: unipayBrandIconFrame 2.4s ease-in-out infinite alternate;
}

#unipay-shell-brand .unipay-brand-icon-image {
  position: absolute;
  z-index: 1;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: 10px;
  backface-visibility: hidden;
  transform-origin: center;
  will-change: opacity, transform, filter;
  animation: unipayBrandIconPhase 12s cubic-bezier(.46, 0, .2, 1) infinite;
}

#unipay-shell-brand .unipay-brand-icon-image.is-secondary {
  animation-delay: -8s;
}

#unipay-shell-brand .logo-mark-secondary.is-brand-lite .unipay-brand-icon-image.is-primary {
  animation: none !important;
  opacity: 1 !important;
  transform: none !important;
}
#unipay-shell-brand .logo-mark-secondary.is-brand-lite .unipay-brand-icon-image.is-secondary,
#unipay-shell-brand .logo-mark-secondary.is-brand-lite .unipay-brand-icon-image.is-tertiary {
  opacity: 0 !important;
  animation: none !important;
}

#unipay-shell-brand .unipay-brand-icon-image.is-tertiary {
  animation-delay: -4s;
}

@keyframes unipayBrandIconPhase {
  0%, 27% {
    opacity: 1;
    filter: brightness(1.04) saturate(1.08);
    transform: perspective(90px) rotateY(0deg) scale(1);
  }
  34%, 93% {
    opacity: 0;
    filter: brightness(.72) saturate(1.32) blur(.8px);
    transform: perspective(90px) rotateY(48deg) scale(.84);
  }
  98%, 100% {
    opacity: 1;
    filter: brightness(1.04) saturate(1.08);
    transform: perspective(90px) rotateY(0deg) scale(1);
  }
}

@keyframes unipayBrandIconScan {
  0%, 30% { left: -55%; opacity: 0; }
  40% { opacity: .88; }
  58% { left: 122%; opacity: 0; }
  100% { left: 122%; opacity: 0; }
}

@keyframes unipayBrandIconFrame {
  from { border-color: rgba(185, 252, 255, .18); }
  to { border-color: rgba(185, 252, 255, .52); }
}

#unipay-shell-brand .unipay-brand-text {
  display: inline-flex;
  align-items: baseline;
  justify-content: flex-start;
  white-space: nowrap;
  line-height: 1;
  isolation: isolate;
}

#unipay-shell-brand .unipay-brand-letter {
  --unipay-brand-letter-index: 0;
  --unipay-brand-letter-hue: 188;
  display: inline-block;
  color: hsl(calc(var(--unipay-brand-letter-hue) * 1deg) 100% 74%);
  text-shadow:
    0 0 10px hsl(calc(var(--unipay-brand-letter-hue) * 1deg) 100% 58% / .72),
    0 0 26px hsl(calc((var(--unipay-brand-letter-hue) + 34) * 1deg) 100% 62% / .46),
    0 7px 28px rgba(0, 18, 42, .58);
  transform-origin: 50% 70%;
  will-change: opacity, transform, color, filter, text-shadow;
  animation:
    unipayBrandLetterWrite 5.8s cubic-bezier(.19, 1, .22, 1) infinite,
    unipayBrandLetterChromatic 8.4s linear infinite;
  animation-delay:
    calc(var(--unipay-brand-letter-index) * 82ms),
    calc(var(--unipay-brand-letter-index) * -470ms);
}

@keyframes unipayBrandLetterWrite {
  0% {
    opacity: 0;
    transform: translate3d(-.34em, .22em, 0) scale(.84) rotateX(60deg);
    filter: blur(7px) saturate(1.8);
  }
  8% {
    opacity: 0;
    transform: translate3d(-.25em, .18em, 0) scale(.88) rotateX(44deg);
    filter: blur(5px) saturate(1.7);
  }
  18%,
  70% {
    opacity: 1;
    transform: translate3d(0, 0, 0) scale(1) rotateX(0deg);
    filter: blur(0) saturate(1.18);
  }
  84% {
    opacity: .92;
    transform: translate3d(.03em, -.05em, 0) scale(1.025);
    filter: blur(.2px) saturate(1.45);
  }
  100% {
    opacity: 0;
    transform: translate3d(.24em, -.12em, 0) scale(.94) rotateX(-34deg);
    filter: blur(5px) saturate(1.8);
  }
}

@keyframes unipayBrandLetterChromatic {
  0% {
    color: hsl(calc(var(--unipay-brand-letter-hue) * 1deg) 100% 74%);
    text-shadow:
      0 0 10px hsl(calc(var(--unipay-brand-letter-hue) * 1deg) 100% 58% / .72),
      0 0 26px hsl(calc((var(--unipay-brand-letter-hue) + 34) * 1deg) 100% 62% / .46),
      0 7px 28px rgba(0, 18, 42, .58);
  }
  33% {
    color: hsl(calc((var(--unipay-brand-letter-hue) + 84) * 1deg) 100% 73%);
    text-shadow:
      0 0 12px hsl(calc((var(--unipay-brand-letter-hue) + 84) * 1deg) 100% 60% / .76),
      0 0 30px hsl(calc((var(--unipay-brand-letter-hue) + 132) * 1deg) 100% 63% / .50),
      0 7px 28px rgba(0, 18, 42, .60);
  }
  66% {
    color: hsl(calc((var(--unipay-brand-letter-hue) + 166) * 1deg) 100% 76%);
    text-shadow:
      0 0 12px hsl(calc((var(--unipay-brand-letter-hue) + 166) * 1deg) 100% 62% / .80),
      0 0 32px hsl(calc((var(--unipay-brand-letter-hue) + 218) * 1deg) 100% 64% / .52),
      0 7px 28px rgba(0, 18, 42, .58);
  }
  100% {
    color: hsl(calc((var(--unipay-brand-letter-hue) + 360) * 1deg) 100% 74%);
    text-shadow:
      0 0 10px hsl(calc((var(--unipay-brand-letter-hue) + 360) * 1deg) 100% 58% / .72),
      0 0 26px hsl(calc((var(--unipay-brand-letter-hue) + 394) * 1deg) 100% 62% / .46),
      0 7px 28px rgba(0, 18, 42, .58);
  }
}

#unipay-menu-up .unipay-menu-up-toggle {
  position: relative;
  z-index: 3;
  display: inline-grid;
  grid-template-columns: 22px 26px 1fr;
  align-items: center;
  justify-items: center;
  width: var(--unipay-menu-up-toggle-width);
  min-width: var(--unipay-menu-up-toggle-width);
  height: var(--unipay-menu-up-height);
  min-height: var(--unipay-menu-up-height);
  margin: 0;
  padding: 0 13px 0 17px;
  overflow: hidden;
  border: 1px solid rgba(118, 255, 230, .66);
  border-radius: 7px 3px 3px 7px;
  clip-path: polygon(12px 0, 100% 0, 100% 100%, 12px 100%, 0 50%);
  color: #efffff;
  background:
    linear-gradient(180deg, rgba(255, 255, 255, .12), rgba(255, 255, 255, .015) 40%, rgba(0, 0, 0, .13)),
    linear-gradient(100deg, rgba(0, 240, 255, .13), rgba(3, 12, 24, .58) 46%, rgba(255, 46, 124, .12));
  box-shadow:
    0 0 0 1px rgba(255, 255, 255, .06) inset,
    0 0 16px rgba(0, 238, 255, .35),
    0 0 24px rgba(255, 46, 124, .16),
    0 10px 28px rgba(0, 0, 0, .34);
  filter: drop-shadow(0 0 7px rgba(0, 238, 255, .38));
  cursor: pointer;
  pointer-events: auto;
  appearance: none;
  -webkit-tap-highlight-color: transparent;
  transition: border-color .22s ease, box-shadow .22s ease, filter .22s ease;
}

#unipay-menu-up .unipay-menu-up-toggle::before,
#unipay-menu-up .unipay-menu-up-toggle::after {
  content: "";
  position: absolute;
  pointer-events: none;
}

#unipay-menu-up .unipay-menu-up-toggle::before {
  inset: 2px;
  border: 1px solid rgba(255, 255, 255, .10);
  clip-path: inherit;
  background: repeating-linear-gradient(108deg, transparent 0 13px, rgba(0, 238, 255, .17) 15px 16px, transparent 18px 31px);
  opacity: .58;
  animation: unipayMenuUpEdgeScan 3.2s linear infinite;
}

#unipay-menu-up .unipay-menu-up-toggle::after {
  inset: -7px 1px;
  border-top: 2px solid rgba(0, 238, 255, .60);
  border-bottom: 2px solid rgba(255, 46, 124, .44);
  filter: blur(5px);
  opacity: .52;
  animation: unipayMenuUpVapor 2.4s ease-in-out infinite;
}

#unipay-menu-up .unipay-menu-up-arrow,
#unipay-menu-up .unipay-menu-up-word,
#unipay-menu-up .unipay-menu-up-counter {
  position: relative;
  z-index: 2;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  letter-spacing: 0;
  text-shadow:
    0 0 7px rgba(0, 238, 255, .92),
    0 0 14px rgba(255, 46, 124, .34);
}

#unipay-menu-up .unipay-menu-up-arrow {
  width: 22px;
  height: 22px;
  color: #78ffe6;
  font-size: 23px;
  line-height: 1;
  transform: translateX(-1px);
  transition: transform .28s ease;
}

#unipay-menu-up .unipay-menu-up-word {
  width: 26px;
  height: 24px;
  color: #f5ffff;
  font-size: 12px;
  font-weight: 900;
  line-height: 1;
  white-space: nowrap;
  transform-style: preserve-3d;
  backface-visibility: hidden;
  animation: unipayMenuUpWordCycle 5s ease-in-out infinite;
}

#unipay-menu-up .unipay-menu-up-counter {
  display: inline-grid;
  grid-template-columns: repeat(3, 12px);
  gap: 2px;
  width: 40px;
  height: 25px;
  padding: 2px;
  border: 1px solid rgba(119, 255, 232, .28);
  border-radius: 3px;
  background: rgba(0, 5, 10, .54);
  box-shadow: 0 0 8px rgba(0, 238, 255, .16) inset, 0 0 8px rgba(255, 46, 124, .10);
}

#unipay-menu-up .unipay-menu-up-digit {
  position: relative;
  display: block;
  width: 12px;
  height: 19px;
}

#unipay-menu-up .unipay-menu-up-digit .segment {
  position: absolute;
  display: block;
  border-radius: 1px;
  background: rgba(89, 125, 122, .16);
  box-shadow: none;
  opacity: .36;
  transition: opacity .16s ease, background-color .16s ease, box-shadow .16s ease;
}

#unipay-menu-up .unipay-menu-up-digit .segment.is-active {
  background: #82ffe8;
  box-shadow: 0 0 3px rgba(130, 255, 232, .92), 0 0 7px rgba(0, 238, 255, .66);
  opacity: 1;
}

#unipay-menu-up .unipay-menu-up-digit .segment-a,
#unipay-menu-up .unipay-menu-up-digit .segment-d,
#unipay-menu-up .unipay-menu-up-digit .segment-g {
  left: 3px;
  width: 7px;
  height: 2px;
}

#unipay-menu-up .unipay-menu-up-digit .segment-a { top: 0; }
#unipay-menu-up .unipay-menu-up-digit .segment-g { top: 8px; }
#unipay-menu-up .unipay-menu-up-digit .segment-d { bottom: 0; }

#unipay-menu-up .unipay-menu-up-digit .segment-b,
#unipay-menu-up .unipay-menu-up-digit .segment-c,
#unipay-menu-up .unipay-menu-up-digit .segment-e,
#unipay-menu-up .unipay-menu-up-digit .segment-f {
  width: 2px;
  height: 7px;
}

#unipay-menu-up .unipay-menu-up-digit .segment-b { top: 2px; right: 0; }
#unipay-menu-up .unipay-menu-up-digit .segment-c { right: 0; bottom: 2px; }
#unipay-menu-up .unipay-menu-up-digit .segment-e { left: 0; bottom: 2px; }
#unipay-menu-up .unipay-menu-up-digit .segment-f { top: 2px; left: 0; }

#unipay-menu-up .unipay-menu-up-toggle:hover,
#unipay-menu-up .unipay-menu-up-toggle:focus-visible,
#unipay-menu-up.is-open .unipay-menu-up-toggle {
  border-color: rgba(196, 255, 243, .92);
  box-shadow:
    0 0 0 1px rgba(255, 255, 255, .12) inset,
    0 0 24px rgba(0, 238, 255, .56),
    0 0 36px rgba(255, 46, 124, .23),
    0 12px 30px rgba(0, 0, 0, .42);
  filter: drop-shadow(0 0 10px rgba(0, 238, 255, .54));
  outline: none;
}

#unipay-menu-up .unipay-menu-up-toggle:hover .unipay-menu-up-word,
#unipay-menu-up .unipay-menu-up-toggle:focus-visible .unipay-menu-up-word {
  animation: unipayMenuUpWordContinuous .9s linear infinite;
}

#unipay-menu-up.is-open .unipay-menu-up-arrow {
  transform: translateX(-3px);
}

#unipay-menu-up .unipay-menu-up-nav {
  position: relative !important;
  inset: auto !important;
  top: 0 !important;
  align-self: flex-start !important;
  z-index: 2 !important;
  display: flex !important;
  flex: 0 1 auto !important;
  align-items: center !important;
  justify-content: flex-start !important;
  gap: 5px !important;
  width: 0 !important;
  min-width: 0 !important;
  max-width: min(
    var(--unipay-menu-up-panel-width),
    calc(100vw - var(--unipay-menu-up-left-limit) - var(--unipay-menu-up-right) - var(--unipay-menu-up-toggle-width) - 9px)
  ) !important;
  height: var(--unipay-menu-up-height) !important;
  min-height: var(--unipay-menu-up-height) !important;
  margin: 0 !important;
  padding: 4px 0 !important;
  overflow-x: auto !important;
  overflow-y: hidden !important;
  border: 0 solid transparent !important;
  border-radius: 0 6px 6px 0 !important;
  clip-path: polygon(18px 0, 100% 0, 100% 100%, 18px 100%, 0 50%) !important;
  color: #f1ffff !important;
  background:
    linear-gradient(180deg, rgba(255, 255, 255, .09), transparent 42%, rgba(0, 0, 0, .10)),
    linear-gradient(90deg, rgba(0, 238, 255, .08), rgba(2, 11, 22, .54) 42%, rgba(255, 46, 124, .08)) !important;
  box-shadow: none !important;
  backdrop-filter: blur(15px) saturate(135%) !important;
  -webkit-backdrop-filter: blur(15px) saturate(135%) !important;
  opacity: 0 !important;
  visibility: hidden !important;
  transform: translateX(42px) scaleX(.12) !important;
  transform-origin: right center !important;
  pointer-events: none !important;
  white-space: nowrap !important;
  scrollbar-width: thin !important;
  scrollbar-color: rgba(0, 238, 255, .42) transparent !important;
  transition:
    width .62s cubic-bezier(.18, .88, .24, 1),
    padding .62s cubic-bezier(.18, .88, .24, 1),
    border-width .18s ease,
    opacity .24s ease,
    transform .62s cubic-bezier(.18, .88, .24, 1),
    visibility 0s linear .62s !important;
}

#unipay-menu-up.is-open .unipay-menu-up-nav {
  width: min(
    var(--unipay-menu-up-panel-width),
    calc(100vw - var(--unipay-menu-up-left-limit) - var(--unipay-menu-up-right) - var(--unipay-menu-up-toggle-width) - 9px)
  ) !important;
  padding: 4px 9px 4px 25px !important;
  border-width: 1px !important;
  border-color: rgba(116, 255, 231, .48) !important;
  box-shadow:
    0 0 0 1px rgba(255, 255, 255, .045) inset,
    0 0 18px rgba(0, 238, 255, .28),
    0 0 28px rgba(255, 46, 124, .12),
    0 10px 28px rgba(0, 0, 0, .32) !important;
  opacity: 1 !important;
  visibility: visible !important;
  transform: translateX(0) scaleX(1) !important;
  pointer-events: auto !important;
  transition:
    width .62s cubic-bezier(.18, .88, .24, 1),
    padding .62s cubic-bezier(.18, .88, .24, 1),
    border-width .18s ease,
    opacity .2s ease .08s,
    transform .62s cubic-bezier(.18, .88, .24, 1),
    visibility 0s linear 0s !important;
}

#unipay-menu-up .unipay-menu-up-nav::before,
#unipay-menu-up .unipay-menu-up-nav::after {
  content: "" !important;
  position: absolute !important;
  pointer-events: none !important;
}

#unipay-menu-up .unipay-menu-up-nav::before {
  inset: 1px 8px auto 21px !important;
  width: auto !important;
  height: 1px !important;
  background: linear-gradient(90deg, transparent, rgba(120, 255, 230, .88), rgba(255, 46, 124, .46), transparent) !important;
  filter: blur(.3px) !important;
  opacity: .82 !important;
  animation: unipayMenuUpRail 2.8s linear infinite !important;
}

#unipay-menu-up .unipay-menu-up-nav::after {
  inset: auto 8px 1px 21px !important;
  width: auto !important;
  height: 2px !important;
  background: linear-gradient(90deg, transparent, rgba(255, 46, 124, .45), rgba(0, 238, 255, .70), transparent) !important;
  filter: blur(3px) !important;
  opacity: .50 !important;
  animation: unipayMenuUpVapor 2.2s ease-in-out infinite !important;
}

#unipay-menu-up .unipay-menu-up-nav > a {
  position: relative !important;
  z-index: 2 !important;
  display: inline-flex !important;
  flex: 0 0 36px !important;
  align-items: center !important;
  justify-content: center !important;
  width: 36px !important;
  min-width: 36px !important;
  max-width: 36px !important;
  height: 36px !important;
  min-height: 36px !important;
  margin: 0 !important;
  padding: 0 !important;
  overflow: visible !important;
  border: 1px solid rgba(135, 255, 235, .14) !important;
  border-radius: 7px !important;
  color: rgba(225, 255, 252, .91) !important;
  background: rgba(255, 255, 255, .025) !important;
  box-shadow: 0 0 0 1px rgba(255, 255, 255, .025) inset !important;
  text-decoration: none !important;
  transform: translateY(0) !important;
  transition: color .18s ease, border-color .18s ease, background .18s ease, box-shadow .18s ease, transform .18s ease !important;
}

#unipay-menu-up .unipay-menu-up-nav > a:hover,
#unipay-menu-up .unipay-menu-up-nav > a:focus-visible {
  color: #ffffff !important;
  border-color: rgba(148, 255, 238, .76) !important;
  background: linear-gradient(145deg, rgba(0, 238, 255, .17), rgba(255, 46, 124, .11)) !important;
  box-shadow:
    0 0 0 1px rgba(255, 255, 255, .10) inset,
    0 0 15px rgba(0, 238, 255, .48),
    0 0 22px rgba(255, 46, 124, .17) !important;
  transform: translateY(-2px) !important;
  outline: none !important;
  animation: unipayMenuUpIconSignal .8s ease-in-out infinite alternate !important;
}

#unipay-menu-up .unipay-menu-up-nav > a.active,
#unipay-menu-up .unipay-menu-up-nav > a[aria-current="page"] {
  color: #031319 !important;
  border-color: rgba(216, 255, 246, .90) !important;
  background: linear-gradient(145deg, rgba(234, 255, 250, .95), rgba(93, 255, 220, .78) 58%, rgba(255, 92, 148, .62)) !important;
  box-shadow:
    0 0 0 1px rgba(255, 255, 255, .46) inset,
    0 0 18px rgba(0, 238, 255, .54),
    0 0 25px rgba(255, 46, 124, .20) !important;
}

#unipay-menu-up .unipay-menu-up-icon {
  width: 19px;
  height: 19px;
  min-width: 19px;
  min-height: 19px;
  stroke: currentColor;
  filter: drop-shadow(0 0 4px rgba(0, 238, 255, .58));
  pointer-events: none;
}

.unipay-menu-up-visually-hidden {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}

#unipay-menu-up-tooltip {
  position: fixed;
  z-index: 100030;
  top: calc(var(--unipay-menu-up-top) + var(--unipay-menu-up-height) + 9px);
  left: 0;
  display: block;
  max-width: min(240px, calc(100vw - 20px));
  min-height: 26px;
  padding: 6px 10px;
  border: 1px solid rgba(125, 255, 232, .48);
  border-radius: 5px;
  color: #f2ffff;
  background: rgba(2, 10, 20, .79);
  box-shadow: 0 0 16px rgba(0, 238, 255, .32), 0 0 22px rgba(255, 46, 124, .12);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  font-size: 12px;
  font-weight: 750;
  line-height: 1.2;
  letter-spacing: 0;
  text-align: center;
  text-shadow: 0 0 8px rgba(0, 238, 255, .58);
  white-space: normal;
  opacity: 0;
  visibility: hidden;
  transform: translate(-50%, -5px);
  pointer-events: none;
  transition: opacity .14s ease, transform .14s ease, visibility 0s linear .14s;
}

#unipay-menu-up-tooltip.is-visible {
  opacity: 1;
  visibility: visible;
  transform: translate(-50%, 0);
  transition: opacity .14s ease, transform .14s ease, visibility 0s linear 0s;
}

html.unipay-menu-up-ready #unipayImmersiveToggle,
html.unipay-menu-up-ready [data-unipay-fullscreen] {
  right: calc(var(--unipay-menu-up-right) + var(--unipay-menu-up-toggle-width) + 12px) !important;
}

@keyframes unipayMenuUpWordCycle {
  0%, 68% { transform: rotateY(0deg); }
  84%, 100% { transform: rotateY(360deg); }
}

@keyframes unipayMenuUpWordContinuous {
  from { transform: rotateY(0deg); }
  to { transform: rotateY(360deg); }
}

@keyframes unipayMenuUpEdgeScan {
  from { background-position: 0 0; }
  to { background-position: 62px 0; }
}

@keyframes unipayMenuUpVapor {
  0%, 100% { opacity: .34; filter: blur(5px); }
  50% { opacity: .78; filter: blur(2.5px); }
}

@keyframes unipayMenuUpRail {
  0% { background-position: -160px 0; }
  100% { background-position: 160px 0; }
}

@keyframes unipayMenuUpIconSignal {
  from { filter: brightness(1) saturate(1); }
  to { filter: brightness(1.16) saturate(1.18); }
}

@media (max-width: 680px) {
  :root {
    --unipay-menu-up-top: calc(env(safe-area-inset-top, 0px) + 12px);
    --unipay-menu-up-right: calc(env(safe-area-inset-right, 0px) + 7px);
    --unipay-menu-up-toggle-width: 132px;
    --unipay-menu-up-height: 46px;
  }

  #unipay-menu-up {
    gap: 5px;
  }

  #unipay-menu-up .unipay-menu-up-toggle {
    grid-template-columns: 19px 23px 1fr;
    padding: 0 9px 0 15px;
    border-radius: 6px 2px 2px 6px;
  }

  #unipay-menu-up .unipay-menu-up-arrow {
    width: 19px;
    height: 19px;
    font-size: 20px;
  }

  #unipay-menu-up .unipay-menu-up-word {
    width: 23px;
    font-size: 11px;
  }

  #unipay-menu-up .unipay-menu-up-counter {
    transform: scale(.92);
    transform-origin: center;
  }

  #unipay-menu-up .unipay-menu-up-nav {
    height: var(--unipay-menu-up-height) !important;
    min-height: var(--unipay-menu-up-height) !important;
    gap: 4px !important;
  }

  #unipay-menu-up.is-open .unipay-menu-up-nav {
    padding: 3px 6px 3px 21px !important;
  }

  #unipay-menu-up .unipay-menu-up-nav > a {
    flex-basis: 34px !important;
    width: 34px !important;
    min-width: 34px !important;
    max-width: 34px !important;
    height: 34px !important;
    min-height: 34px !important;
  }

  #unipay-menu-up .unipay-menu-up-icon {
    width: 18px;
    height: 18px;
    min-width: 18px;
    min-height: 18px;
  }

  #unipay-menu-up-tooltip {
    top: calc(var(--unipay-menu-up-top) + var(--unipay-menu-up-height) + 7px);
    font-size: 11px;
  }
}

/* 20260818 - Geometrie mobile canonique.
   Le passage en plein ecran ne deplace plus l'entete. Le menu reste compact
   afin que le titre UniPayWeb a 34 px, le plein ecran et le menu ne se
   chevauchent jamais, y compris sur un viewport de 320 px. */
@media (max-width: 680px) {
  :root,
  html.unipay-native-fullscreen,
  html.unipay-root-fullscreen-active,
  html:fullscreen {
    --unipay-menu-up-top: calc(env(safe-area-inset-top, 0px) + 7px) !important;
    --unipay-menu-up-right: calc(env(safe-area-inset-right, 0px) + 6px) !important;
    --unipay-menu-up-toggle-width: 42px !important;
    --unipay-menu-up-height: 42px !important;
  }

  html #unipay-shell-brand,
  html.unipay-native-fullscreen #unipay-shell-brand,
  html.unipay-root-fullscreen-active #unipay-shell-brand,
  html:fullscreen #unipay-shell-brand {
    display: flex !important;
  }

  html #unipay-menu-up,
  html.unipay-native-fullscreen #unipay-menu-up,
  html.unipay-root-fullscreen-active #unipay-menu-up,
  html:fullscreen #unipay-menu-up {
    top: calc(env(safe-area-inset-top, 0px) + 7px) !important;
    right: calc(env(safe-area-inset-right, 0px) + 6px) !important;
    width: auto !important;
    height: 42px !important;
  }

  html #unipay-menu-up,
  html.unipay-native-fullscreen #unipay-menu-up,
  html.unipay-root-fullscreen-active #unipay-menu-up,
  html:fullscreen #unipay-menu-up {
    top: calc(env(safe-area-inset-top, 0px) + 7px) !important;
    right: calc(env(safe-area-inset-right, 0px) + 6px) !important;
    left: auto !important;
    width: 42px !important;
    min-width: 42px !important;
    max-width: 42px !important;
    height: 42px !important;
  }

  html #unipay-menu-up .unipay-menu-up-toggle,
  html #unipay-menu-up.is-open .unipay-menu-up-toggle,
  html.unipay-native-fullscreen #unipay-menu-up .unipay-menu-up-toggle,
  html.unipay-root-fullscreen-active #unipay-menu-up .unipay-menu-up-toggle,
  html:fullscreen #unipay-menu-up .unipay-menu-up-toggle {
    grid-template-columns: 1fr !important;
    width: 42px !important;
    min-width: 42px !important;
    max-width: 42px !important;
    height: 42px !important;
    min-height: 42px !important;
    max-height: 42px !important;
    padding: 0 !important;
    border-radius: 6px !important;
  }

  html #unipay-menu-up .unipay-menu-up-word,
  html #unipay-menu-up .unipay-menu-up-counter {
    display: none !important;
  }

  html #unipay-menu-up .unipay-menu-up-arrow {
    width: 22px !important;
    height: 22px !important;
  }

  html.unipay-menu-up-ready #unipayImmersiveToggle,
  html.unipay-menu-up-ready [data-unipay-fullscreen],
  html.unipay-native-fullscreen #unipayImmersiveToggle.unipay-immersive-toggle,
  html.unipay-root-fullscreen-active #unipayImmersiveToggle.unipay-immersive-toggle,
  html.unipay-immersive-state-active #unipayImmersiveToggle.unipay-immersive-toggle,
  html:fullscreen #unipayImmersiveToggle.unipay-immersive-toggle {
    top: calc(env(safe-area-inset-top, 0px) + 8px) !important;
    right: calc(env(safe-area-inset-right, 0px) + 56px) !important;
    left: auto !important;
    width: 40px !important;
    height: 40px !important;
    transform: none !important;
  }
}

@media (prefers-reduced-motion: reduce) {
  #unipay-menu-up *,
  #unipay-menu-up *::before,
  #unipay-menu-up *::after,
  #unipay-menu-up-tooltip {
    scroll-behavior: auto !important;
    animation-duration: .001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .001ms !important;
    transition-delay: 0s !important;
  }
}

@media (max-width: 680px) {
  html.unipay-native-fullscreen,
  html.unipay-root-fullscreen-active,
  html:fullscreen {
    --unipay-menu-up-top: calc(env(safe-area-inset-top, 0px) + 5px);
    --unipay-menu-up-right: 6px;
    --unipay-menu-up-toggle-width: 42px;
    --unipay-menu-up-height: 42px;
  }

  html.unipay-native-fullscreen #unipay-shell-brand,
  html.unipay-root-fullscreen-active #unipay-shell-brand,
  html:fullscreen #unipay-shell-brand {
    display: none !important;
  }

  html.unipay-native-fullscreen #unipay-menu-up,
  html.unipay-root-fullscreen-active #unipay-menu-up,
  html:fullscreen #unipay-menu-up {
    top: calc(env(safe-area-inset-top, 0px) + 5px) !important;
    right: 6px !important;
    width: auto !important;
    height: 42px !important;
    z-index: 2147483550 !important;
    display: flex !important;
    visibility: visible !important;
    opacity: 1 !important;
  }

  html.unipay-native-fullscreen #unipay-menu-up .unipay-menu-up-toggle,
  html.unipay-root-fullscreen-active #unipay-menu-up .unipay-menu-up-toggle,
  html:fullscreen #unipay-menu-up .unipay-menu-up-toggle,
  html.unipay-native-fullscreen #unipay-menu-up.is-open .unipay-menu-up-toggle,
  html.unipay-root-fullscreen-active #unipay-menu-up.is-open .unipay-menu-up-toggle,
  html:fullscreen #unipay-menu-up.is-open .unipay-menu-up-toggle {
    grid-template-columns: 1fr !important;
    width: 42px !important;
    min-width: 42px !important;
    max-width: 42px !important;
    height: 42px !important;
    min-height: 42px !important;
    max-height: 42px !important;
    padding: 0 !important;
    border-radius: 6px !important;
    display: grid !important;
    visibility: visible !important;
    opacity: 1 !important;
  }

  html.unipay-native-fullscreen #unipay-menu-up .unipay-menu-up-word,
  html.unipay-root-fullscreen-active #unipay-menu-up .unipay-menu-up-word,
  html:fullscreen #unipay-menu-up .unipay-menu-up-word,
  html.unipay-native-fullscreen #unipay-menu-up .unipay-menu-up-counter,
  html.unipay-root-fullscreen-active #unipay-menu-up .unipay-menu-up-counter,
  html:fullscreen #unipay-menu-up .unipay-menu-up-counter {
    display: none !important;
  }

  html.unipay-native-fullscreen #unipay-menu-up .unipay-menu-up-arrow,
  html.unipay-root-fullscreen-active #unipay-menu-up .unipay-menu-up-arrow,
  html:fullscreen #unipay-menu-up .unipay-menu-up-arrow {
    width: 22px;
    height: 22px;
  }
}

/* The trigger is the left end of one expanding object. The navigation grows
   to its right, inside the same visual shell. */
#unipay-menu-up {
  align-items: center;
  justify-content: flex-start;
  gap: 0;
}

#unipay-menu-up .unipay-menu-up-toggle {
  order: 1;
}

#unipay-menu-up .unipay-menu-up-nav {
  order: 2;
  max-width: min(
    var(--unipay-menu-up-panel-width),
    calc(100vw - var(--unipay-menu-up-left-limit) - var(--unipay-menu-up-right) - var(--unipay-menu-up-toggle-width))
  ) !important;
  border-radius: 0 7px 7px 0 !important;
  clip-path: none !important;
  transform: translateX(-26px) scaleX(.10) !important;
  transform-origin: left center !important;
}

#unipay-menu-up.is-open .unipay-menu-up-toggle {
  border-right-color: transparent;
  border-radius: 7px 0 0 7px;
  background:
    linear-gradient(180deg, rgba(255, 255, 255, .10), rgba(255, 255, 255, .015) 42%, rgba(0, 0, 0, .12)),
    rgba(3, 14, 25, .82);
  box-shadow:
    0 0 0 1px rgba(255, 255, 255, .08) inset,
    -5px 0 19px rgba(0, 238, 255, .34),
    0 0 23px rgba(255, 46, 124, .12);
}

#unipay-menu-up.is-open .unipay-menu-up-nav {
  width: min(
    var(--unipay-menu-up-panel-width),
    calc(100vw - var(--unipay-menu-up-left-limit) - var(--unipay-menu-up-right) - var(--unipay-menu-up-toggle-width))
  ) !important;
  padding: 4px 9px !important;
  border-width: 1px 1px 1px 0 !important;
  border-color: rgba(116, 255, 231, .48) !important;
  background:
    linear-gradient(180deg, rgba(255, 255, 255, .09), transparent 42%, rgba(0, 0, 0, .10)),
    rgba(3, 14, 25, .78) !important;
  box-shadow:
    0 0 0 1px rgba(255, 255, 255, .04) inset,
    8px 0 20px rgba(0, 238, 255, .25),
    12px 0 26px rgba(255, 46, 124, .10) !important;
  transform: translateX(0) scaleX(1) !important;
}

#unipay-menu-up .unipay-menu-up-word,
#unipay-menu-up .unipay-menu-up-toggle:hover .unipay-menu-up-word,
#unipay-menu-up .unipay-menu-up-toggle:focus-visible .unipay-menu-up-word {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  animation: none;
  transform: none;
}

#unipay-menu-up .unipay-menu-up-letter {
  display: inline-block;
  min-width: .58em;
  opacity: 0;
  filter: blur(3px);
  transform: translateY(5px);
  animation: unipayMenuUpLetterReveal 5.4s ease-in-out infinite;
  animation-delay: calc(var(--unipay-menu-up-letter-index) * 110ms);
}

#unipay-menu-up .unipay-menu-up-toggle:hover .unipay-menu-up-letter,
#unipay-menu-up .unipay-menu-up-toggle:focus-visible .unipay-menu-up-letter,
#unipay-menu-up.is-open .unipay-menu-up-letter {
  animation-duration: 2.7s;
  animation-delay: calc(var(--unipay-menu-up-letter-index) * 70ms);
}

@keyframes unipayMenuUpLetterReveal {
  0%, 5% {
    opacity: 0;
    filter: blur(3px);
    transform: translateY(5px);
  }
  14%, 72% {
    opacity: 1;
    filter: blur(0);
    transform: translateY(0);
  }
  86%, 100% {
    opacity: 0;
    filter: blur(2px);
    transform: translateY(-3px);
  }
}

@media (max-width: 680px) {
  #unipay-menu-up.is-open {
    gap: 0;
  }

  #unipay-menu-up.is-open .unipay-menu-up-toggle {
    grid-template-columns: 15px 18px 1fr;
    width: 84px;
    min-width: 84px;
    padding: 0 5px 0 7px;
  }

  #unipay-menu-up.is-open .unipay-menu-up-arrow {
    width: 15px;
    height: 18px;
    font-size: 18px;
  }

  #unipay-menu-up.is-open .unipay-menu-up-word {
    width: 18px;
    font-size: 10px;
  }

  #unipay-menu-up.is-open .unipay-menu-up-counter {
    transform: scale(.78);
  }

  #unipay-menu-up.is-open .unipay-menu-up-nav {
    width: min(
      var(--unipay-menu-up-panel-width),
      calc(100vw - var(--unipay-menu-up-left-limit) - var(--unipay-menu-up-right) - 84px)
    ) !important;
    max-width: min(
      var(--unipay-menu-up-panel-width),
      calc(100vw - var(--unipay-menu-up-left-limit) - var(--unipay-menu-up-right) - 84px)
    ) !important;
    gap: 2px !important;
    padding: 3px !important;
    overflow-x: hidden !important;
  }

  #unipay-menu-up.is-open .unipay-menu-up-nav > a {
    flex: 1 1 30px !important;
    width: auto !important;
    min-width: 27px !important;
    max-width: 34px !important;
  }
}

@media (prefers-reduced-motion: reduce) {
  #unipay-menu-up .unipay-menu-up-letter {
    opacity: 1 !important;
    filter: none !important;
    transform: none !important;
    animation: none !important;
  }
}

/* Derniere declaration du fichier : le plein ecran conserve la geometrie
   mobile normale de l'entete et le bouton reste centre dans les deux modes. */
@media (max-width: 680px) {
  html #unipay-menu-up,
  html.unipay-native-fullscreen #unipay-menu-up,
  html.unipay-root-fullscreen-active #unipay-menu-up,
  html:fullscreen #unipay-menu-up {
    top: calc(env(safe-area-inset-top, 0px) + 7px) !important;
    right: calc(env(safe-area-inset-right, 0px) + 6px) !important;
    left: auto !important;
    width: 42px !important;
    min-width: 42px !important;
    max-width: 42px !important;
    height: 42px !important;
  }

  html #unipay-shell-brand,
  html.unipay-native-fullscreen #unipay-shell-brand,
  html.unipay-root-fullscreen-active #unipay-shell-brand,
  html:fullscreen #unipay-shell-brand {
    display: flex !important;
  }

  html.unipay-native-fullscreen #unipay-menu-up,
  html.unipay-root-fullscreen-active #unipay-menu-up,
  html:fullscreen #unipay-menu-up {
    top: calc(env(safe-area-inset-top, 0px) + 7px) !important;
    right: calc(env(safe-area-inset-right, 0px) + 6px) !important;
    width: auto !important;
    height: 42px !important;
  }

  html.unipay-menu-up-ready #unipayImmersiveToggle.unipay-immersive-toggle,
  html.unipay-menu-up-ready [data-unipay-fullscreen].unipay-immersive-toggle,
  html.unipay-native-fullscreen #unipayImmersiveToggle.unipay-immersive-toggle,
  html.unipay-root-fullscreen-active #unipayImmersiveToggle.unipay-immersive-toggle,
  html.unipay-immersive-state-active #unipayImmersiveToggle.unipay-immersive-toggle,
  html:fullscreen #unipayImmersiveToggle.unipay-immersive-toggle {
    top: calc(env(safe-area-inset-top, 0px) + 8px) !important;
    right: auto !important;
    left: 50% !important;
    width: 40px !important;
    height: 40px !important;
    transform: translateX(-50%) !important;
  }

  /* L'ouverture mobile est une palette complète sous l'entête. Elle ne
     comprime plus les raccourcis dans une ligne partiellement visible et la
     géométrie reste exactement la même lorsque le navigateur passe en plein
     écran. */
  #unipay-menu-up.is-open .unipay-menu-up-nav {
    position: fixed !important;
    inset: calc(env(safe-area-inset-top, 0px) + 58px) 8px auto !important;
    display: grid !important;
    grid-template-columns: repeat(auto-fit, minmax(44px, 1fr)) !important;
    align-items: center !important;
    gap: 7px !important;
    width: calc(100vw - 16px) !important;
    min-width: 0 !important;
    max-width: none !important;
    height: auto !important;
    min-height: 58px !important;
    max-height: calc(100dvh - env(safe-area-inset-top, 0px) - 138px) !important;
    margin: 0 !important;
    padding: 9px !important;
    overflow-x: hidden !important;
    overflow-y: auto !important;
    border-width: 1px !important;
    border-radius: 14px !important;
    clip-path: none !important;
    transform: translateY(0) scale(1) !important;
    transform-origin: top center !important;
    touch-action: pan-y !important;
    -webkit-overflow-scrolling: touch;
  }

  #unipay-menu-up.is-open {
    /* Sans contain:layout, la palette fixed est ancrée au viewport et non au
       petit conteneur du bouton situé à droite. */
    contain: style !important;
  }

  #unipay-menu-up.is-open .unipay-menu-up-nav > a {
    display: inline-flex !important;
    flex: none !important;
    width: 100% !important;
    min-width: 44px !important;
    max-width: none !important;
    height: 44px !important;
    min-height: 44px !important;
  }

  #unipay-menu-up.is-open .unipay-menu-up-nav::before {
    inset: 1px 12px auto !important;
  }

  #unipay-menu-up.is-open .unipay-menu-up-nav::after {
    inset: auto 12px 1px !important;
  }
}

/* Le titre reste ancre a gauche. Sa largeur visuelle est compactee uniquement
   lorsque le viewport est trop etroit pour cohabiter avec le bouton central. */
@media (min-width: 431px) and (max-width: 480px) {
  #unipay-shell-brand .unipay-brand-secondary { transform: scaleX(.84) !important; transform-origin: left center !important; }
}
@media (min-width: 351px) and (max-width: 430px) {
  #unipay-shell-brand .unipay-brand-secondary { transform: scaleX(.75) !important; transform-origin: left center !important; }
}
@media (max-width: 350px) {
  #unipay-shell-brand .unipay-brand-secondary { transform: scaleX(.64) !important; transform-origin: left center !important; }
}

/* Restauration du compteur a sept segments sur mobile : le libelle long reste
   replie, mais l'etat du menu redevient lisible sans pousser le bouton en bas. */
@media (max-width:680px){
  html #unipay-menu-up,html.unipay-native-fullscreen #unipay-menu-up,html.unipay-root-fullscreen-active #unipay-menu-up{width:86px!important;min-width:86px!important;max-width:86px!important;right:6px!important;top:7px!important}
  html #unipay-menu-up .unipay-menu-up-toggle{width:86px!important;min-width:86px!important;grid-template-columns:20px 1fr!important;padding:0 8px!important}
  html #unipay-menu-up .unipay-menu-up-counter{display:inline-grid!important;justify-self:end!important}
  html #unipay-menu-up .unipay-menu-up-word{display:none!important}
  html #unipay-menu-up.is-open .unipay-menu-up-nav{right:8px!important;left:8px!important;width:auto!important}
}

/* Notification commune : sous le menu, au-dessus de l'aide et des paramètres. */
#unipay-notification-dock{
  position:fixed;right:max(16px,env(safe-area-inset-right,0px));bottom:142px;z-index:100006;
  display:grid;place-items:center;width:50px;height:50px;padding:0;border:1px solid rgba(110,233,246,.72);
  border-radius:50%;background:rgba(2,19,35,.95);color:#e5fdff;cursor:pointer;
  box-shadow:0 0 16px rgba(36,211,234,.28),inset 0 0 14px rgba(36,211,234,.13);
  isolation:isolate;transition:transform .2s,border-color .2s,box-shadow .2s;
}
#unipay-notification-dock svg{width:24px;height:24px;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;fill:none;position:relative;z-index:1}
#unipay-notification-dock:hover,#unipay-notification-dock:focus-visible{transform:scale(1.08);border-color:#fff;outline:2px solid #8cf4ff;outline-offset:3px}
#unipay-notification-dock .unipay-notification-dock-count{position:absolute;z-index:3;top:-10px;right:-9px;display:grid;place-items:center;min-width:25px;height:25px;padding:0 4px;border:1px solid #9af5ff;border-radius:99px;background:#073448;color:#fff;font-size:.72rem;font-weight:850;box-shadow:0 0 12px rgba(64,223,241,.55)}
#unipay-notification-dock.has-unread{animation:unipayNotificationSway 1.6s ease-in-out infinite}
#unipay-notification-dock.has-unread::before{content:"";position:absolute;inset:-5px;border-radius:inherit;background:conic-gradient(from 0deg,#40e7f3,#754dff,#f94ea5,#70f5ca,#40e7f3);filter:blur(7px);opacity:.8;z-index:-1;animation:unipayNotificationVapor 3s linear infinite}
#unipay-notification-dock.has-unread::after{content:"";position:absolute;inset:-2px;border:2px solid rgba(130,238,255,.8);border-radius:inherit;filter:blur(2px);opacity:.75;animation:unipayNotificationGlow 2s ease-in-out infinite;pointer-events:none}
@keyframes unipayNotificationSway{0%,100%{transform:rotate(0)}20%{transform:rotate(-9deg)}42%{transform:rotate(8deg)}62%{transform:rotate(-5deg)}80%{transform:rotate(4deg)}}
@keyframes unipayNotificationVapor{to{filter:blur(9px) hue-rotate(360deg)}}
@keyframes unipayNotificationGlow{50%{opacity:.25;box-shadow:0 0 22px #9e66ff}}
html.unipay-notifications-open #unipay-notification-dock,body.unipay-settings-open #unipay-notification-dock,body.unipay-media-storage-open #unipay-notification-dock{visibility:hidden;pointer-events:none}
@media(max-width:760px){#unipay-notification-dock{right:max(10px,env(safe-area-inset-right,0px));bottom:calc(var(--fut-bottom-height,56px) + var(--fut-bottombar-bottom-offset,8px) + 130px);width:46px;height:46px}}
@media(prefers-reduced-motion:reduce){#unipay-notification-dock.has-unread,#unipay-notification-dock.has-unread::before,#unipay-notification-dock.has-unread::after{animation:none}}

/* 20260820 - Restauration de l'ouverture horizontale historique. Le bouton
   reste dans la ligne superieure et la navigation occupe tout l'espace a sa
   gauche, en mode normal comme en plein ecran. */
@media (max-width:680px){
  html #unipay-menu-up.is-open,
  html.unipay-native-fullscreen #unipay-menu-up.is-open,
  html.unipay-root-fullscreen-active #unipay-menu-up.is-open,
  html:fullscreen #unipay-menu-up.is-open{
    right:6px !important;
    left:6px !important;
    width:calc(100vw - 12px) !important;
    min-width:0 !important;
    max-width:none !important;
    height:42px !important;
    display:flex !important;
    flex-direction:row !important;
    align-items:center !important;
    justify-content:flex-end !important;
    contain:style !important;
  }

  html #unipay-menu-up.is-open .unipay-menu-up-toggle{
    order:2 !important;
    flex:0 0 86px !important;
  }

  html #unipay-menu-up.is-open .unipay-menu-up-nav{
    position:relative !important;
    inset:auto !important;
    order:1 !important;
    flex:1 1 auto !important;
    display:grid !important;
    grid-template-columns:repeat(auto-fit, minmax(40px, 1fr)) !important;
    align-items:center !important;
    gap:2px !important;
    width:auto !important;
    min-width:0 !important;
    max-width:none !important;
    height:42px !important;
    min-height:42px !important;
    max-height:42px !important;
    margin:0 !important;
    padding:3px !important;
    overflow:hidden !important;
    border-radius:7px 0 0 7px !important;
    transform:none !important;
    touch-action:manipulation !important;
  }

  html #unipay-menu-up.is-open .unipay-menu-up-nav > a{
    width:100% !important;
    min-width:0 !important;
    max-width:none !important;
    height:34px !important;
    min-height:34px !important;
    padding:0 !important;
  }

  html #unipay-menu-up .unipay-menu-up-toggle,
  html.unipay-native-fullscreen #unipay-menu-up .unipay-menu-up-toggle,
  html.unipay-root-fullscreen-active #unipay-menu-up .unipay-menu-up-toggle,
  html:fullscreen #unipay-menu-up .unipay-menu-up-toggle{
    width:132px !important;
    min-width:132px !important;
    max-width:132px !important;
    grid-template-columns:19px 23px minmax(40px, 1fr) !important;
    padding:0 9px 0 12px !important;
  }
}

/* 20260820 - Parite mobile/ordinateur du declencheur superieur : fleche,
   libelle UP et compteur a trois chiffres restent sur une seule ligne dans
   les modes normal, ouvert et plein ecran. */
@media (max-width:680px){
  :root,
  html.unipay-native-fullscreen,
  html.unipay-root-fullscreen-active,
  html:fullscreen{
    --unipay-menu-up-toggle-width:132px !important;
  }

  html #unipay-menu-up,
  html.unipay-native-fullscreen #unipay-menu-up,
  html.unipay-root-fullscreen-active #unipay-menu-up,
  html:fullscreen #unipay-menu-up{
    width:132px !important;
    min-width:132px !important;
    max-width:132px !important;
  }

  html #unipay-menu-up .unipay-menu-up-toggle,
  html #unipay-menu-up.is-open .unipay-menu-up-toggle,
  html.unipay-native-fullscreen #unipay-menu-up .unipay-menu-up-toggle,
  html.unipay-root-fullscreen-active #unipay-menu-up .unipay-menu-up-toggle,
  html:fullscreen #unipay-menu-up .unipay-menu-up-toggle{
    display:grid !important;
    grid-template-columns:19px 23px minmax(40px, 1fr) !important;
    width:132px !important;
    min-width:132px !important;
    max-width:132px !important;
    height:42px !important;
    padding:0 9px 0 12px !important;
  }

  html #unipay-menu-up .unipay-menu-up-word,
  html.unipay-native-fullscreen #unipay-menu-up .unipay-menu-up-word,
  html.unipay-root-fullscreen-active #unipay-menu-up .unipay-menu-up-word,
  html:fullscreen #unipay-menu-up .unipay-menu-up-word{
    display:inline-flex !important;
    width:23px !important;
    font-size:11px !important;
  }

  html #unipay-menu-up .unipay-menu-up-counter,
  html.unipay-native-fullscreen #unipay-menu-up .unipay-menu-up-counter,
  html.unipay-root-fullscreen-active #unipay-menu-up .unipay-menu-up-counter,
  html:fullscreen #unipay-menu-up .unipay-menu-up-counter{
    display:inline-grid !important;
    transform:scale(.88) !important;
    transform-origin:center !important;
  }

  html #unipay-menu-up.is-open .unipay-menu-up-toggle{
    order:2 !important;
    flex:0 0 132px !important;
  }

  html #unipay-menu-up.is-open .unipay-menu-up-nav{
    width:calc(100vw - 144px) !important;
    max-width:calc(100vw - 144px) !important;
  }

  #unipay-shell-brand .unipay-brand-secondary{
    transform:scaleX(.64) !important;
    transform-origin:left center !important;
  }
}

@media (max-width:350px){
  #unipay-shell-brand .unipay-brand-secondary{
    transform:scaleX(.54) !important;
  }
}

/* 20260820 - La navigation ouverte reserve physiquement la zone du bouton
   plein ecran centre. Les quatre raccourcis habituels restent a gauche; un
   eventuel cinquieme raccourci occupe la cellule a droite. Aucun objet
   interactif ne passe donc sous le bouton central. */
@media (max-width:680px){
  html #unipay-menu-up.is-open .unipay-menu-up-nav{
    grid-template-columns:repeat(4, minmax(0, 1fr)) 56px 28px !important;
  }

  html #unipay-menu-up.is-open .unipay-menu-up-nav > a:nth-child(5){
    grid-column:6 !important;
  }

  html #unipay-menu-up .unipay-menu-up-letter,
  html #unipay-menu-up.is-open .unipay-menu-up-letter{
    opacity:1 !important;
    filter:none !important;
    transform:none !important;
    animation:none !important;
  }
}

/* Tous les portails restent accessibles depuis la palette sur téléphone. */
@media(max-width:680px){
  html #unipay-menu-up.is-open .unipay-menu-up-nav{
    position:fixed!important;top:calc(env(safe-area-inset-top,0px) + 58px)!important;
    left:8px!important;right:8px!important;display:grid!important;
    grid-template-columns:repeat(7,minmax(0,1fr))!important;gap:clamp(2px,.7vw,5px)!important;
    width:calc(100vw - 16px)!important;max-width:none!important;
    height:auto!important;min-height:0!important;max-height:calc(100dvh - 150px)!important;
    padding:8px!important;overflow-x:hidden!important;overflow-y:hidden!important;
    border-radius:14px!important;clip-path:none!important;transform:none!important;
  }
  html #unipay-menu-up.is-open .unipay-menu-up-nav > a:nth-child(5){grid-column:auto!important}
}

/* Les destinations du menu sont des pictogrammes, sans habillage de bouton. */
#unipay-menu-up .unipay-menu-up-nav > a,
#unipay-menu-up .unipay-menu-up-nav > a:hover,
#unipay-menu-up .unipay-menu-up-nav > a:focus-visible,
#unipay-menu-up .unipay-menu-up-nav > a.active,
#unipay-menu-up .unipay-menu-up-nav > a[aria-current="page"]{
  border:0!important;border-radius:0!important;background:transparent!important;
  box-shadow:none!important;padding:0!important;
}
#unipay-menu-up .unipay-menu-up-nav > a{color:#c8ecef!important}
#unipay-menu-up .unipay-menu-up-nav > a:hover,
#unipay-menu-up .unipay-menu-up-nav > a:focus-visible{color:#fff!important;transform:scale(1.12)!important;animation:none!important;outline:2px solid #91eff6!important;outline-offset:2px!important}
#unipay-menu-up .unipay-menu-up-nav > a.active,
#unipay-menu-up .unipay-menu-up-nav > a[aria-current="page"]{color:#83f4ed!important}
#unipay-menu-up .unipay-menu-up-nav > a.active .unipay-menu-up-icon,
#unipay-menu-up .unipay-menu-up-nav > a[aria-current="page"] .unipay-menu-up-icon{filter:drop-shadow(0 0 8px rgba(94,246,234,.9))}
#unipay-menu-up .unipay-menu-up-icon{width:24px;height:24px;min-width:24px;min-height:24px}
@media(max-width:680px){#unipay-menu-up .unipay-menu-up-icon{width:27px;height:27px;min-width:27px;min-height:27px}}

@media (max-width:720px) {
  #unipay-shell-brand .unipay-brand-secondary { gap:5px !important; }
  #unipay-shell-brand .logo-mark-secondary { flex:0 0 30px !important; width:30px !important; height:30px !important; border-radius:9px !important; }
  #unipay-shell-brand .unipay-brand-icon-image { border-radius:8px !important; }
}
@media (prefers-reduced-motion: reduce) {
  #unipay-shell-brand .unipay-brand-icon-image.is-primary { opacity:1 !important; transform:none !important; animation:none !important; }
  #unipay-shell-brand .unipay-brand-icon-image.is-secondary,
  #unipay-shell-brand .unipay-brand-icon-image.is-tertiary { display:none !important; }
}
