html { --pwa-launch-background: #1e3a8a; --pwa-launch-track: rgba(255, 255, 255, .3); --pwa-launch-text: #ffffff; }
html[data-pwa-variant="partner"] { --pwa-launch-background: #9f1239; }
html[data-pwa-variant="desk"] { --pwa-launch-background: #f4b400; --pwa-launch-track: rgba(30, 41, 59, .25); --pwa-launch-text: var(--theme-body, #1e293b); }
html[data-user-theme][data-pwa-variant] {
  --pwa-launch-background: var(--theme-decoration);
  --pwa-launch-text: var(--theme-decoration-ink);
  --pwa-launch-track: color-mix(in srgb, var(--theme-decoration-ink) 30%, transparent);
}

/* Preserve normal swiping and scrolling while blocking pinch and double-tap zoom. */
html[data-pwa-touch-zoom-locked] { touch-action: pan-x pan-y; }

html.pwa-launching {
  overflow: hidden;
  background: var(--pwa-launch-background);
}
html.pwa-launching::before {
  content: "";
  position: fixed;
  inset: 0;
  z-index: 2147483646;
  background: var(--pwa-launch-background);
}
html.pwa-launching::after {
  content: "";
  position: fixed;
  top: 50%;
  left: 50%;
  z-index: 2147483647;
  width: 40px;
  height: 40px;
  border: 3px solid var(--pwa-launch-track);
  border-top-color: var(--pwa-launch-text);
  border-radius: 50%;
  transform: translate(-50%, -50%);
  animation: pwa-loading-spin .7s linear infinite;
}
@keyframes pwa-loading-spin {
  to { transform: translate(-50%, -50%) rotate(360deg); }
}
@media (prefers-reduced-motion: reduce) {
  html.pwa-launching::after { animation-duration: 1.4s; }
}

/* Bootstrap display utilities must not reveal ineligible install actions. */
[data-pwa-install][hidden],
[data-pwa-install-container][hidden] {
  display: none !important;
}

/* Keep these short instructions compact, including on mobile. */
#pwaInstallModal .modal-dialog {
  width: calc(100% - 2rem) !important;
  max-width: 380px !important;
  height: auto;
  min-height: calc(100% - 2rem);
  margin: 1rem auto !important;
}

#pwaInstallModal .modal-content {
  height: auto;
  max-height: calc(100vh - 2rem);
  max-height: calc(100dvh - 2rem);
  border: 1px solid var(--app-modal-border, #dbe3ee) !important;
}

#pwaInstallModal .modal-body {
  overflow-y: auto;
}

/* Installed apps paint behind the phone's gesture area as well as the header.
   The root colour covers overscroll; the fixed inset covers edge-to-edge views. */
@media screen {
  html[data-pwa-variant]:not(.app-iframe-root) {
    --pwa-safe-bottom: env(safe-area-inset-bottom, 0px);
    background-color: var(--pwa-chrome-colour, var(--pwa-launch-background)) !important;
  }
  html[data-pwa-variant]:not(.app-iframe-root) body::after {
    content: "";
    position: fixed;
    inset: auto 0 0;
    height: var(--pwa-safe-bottom);
    z-index: 2147483645;
    background: var(--pwa-chrome-colour, var(--pwa-launch-background));
    pointer-events: none;
  }
}
