/* Qualixa — ecran de bienvenue : fond blanc nacre + symboles statistiques qui flottent.
   Overlay RACINE (dans app_ui, hors du uiOutput remplace au login) => survit au passage
   vitrine -> tableau de bord. Cache par defaut ; AFFICHE instantanement au clic "Se connecter"
   (qx_welcome.js) ; RETIRE quand le tableau de bord est confirme rendu, avec fondus.
   Classes prefixees qxw- => zero collision avec Bootstrap/bs4Dash. */
.qxw{position:fixed;inset:0;overflow:hidden;z-index:99999;color:#20202a;
  opacity:0;visibility:hidden;pointer-events:none;
  background:
    radial-gradient(900px 560px at 26% 20%, rgba(232,214,170,.16), transparent 60%),
    radial-gradient(820px 620px at 80% 84%, rgba(228,214,222,.13), transparent 62%),
    radial-gradient(1000px 680px at 50% 32%, rgba(216,226,240,.11), transparent 66%),
    linear-gradient(158deg,#ffffff 0%,#fdfcf9 44%,#fffefc 70%,#f9f6ef 100%)}
.qxw *{box-sizing:border-box}
/* transitions obligatoires : fondu d'entree rapide, fondu de sortie plus doux */
.qxw.qxw-show{opacity:1;visibility:visible;pointer-events:auto;transition:opacity .32s ease}
.qxw.qxw-done{opacity:0;transform:scale(1.015);transition:opacity .72s ease, transform .72s ease}
.qxw #oc{position:absolute;inset:0;width:100%;height:100%;display:block}

.qxw-center{position:absolute;inset:0;z-index:5;display:flex;flex-direction:column;
  align-items:center;justify-content:center;text-align:center;padding:0 24px}
.qxw-mark{width:72px;height:72px;border-radius:20px;position:relative;margin-bottom:22px;
  background:linear-gradient(150deg,#e64a5a 0%,#C8102E 60%,#9d0c24 100%);
  box-shadow:0 16px 34px rgba(200,16,46,.28),inset 0 1px 0 rgba(255,255,255,.3);
  display:flex;align-items:flex-end;justify-content:center;gap:6px;padding:16px}
.qxw-mark span{width:8px;border-radius:3px;background:#fff;animation:qxw-bar 1.2s ease-in-out infinite}
.qxw-mark span:nth-child(1){height:38%}.qxw-mark span:nth-child(2){height:66%;animation-delay:.12s}
.qxw-mark span:nth-child(3){height:50%;animation-delay:.24s}.qxw-mark span:nth-child(4){height:82%;animation-delay:.36s}
@keyframes qxw-bar{0%,100%{transform:scaleY(.6)}50%{transform:scaleY(1)}}
.qxw-word{font-size:15px;font-weight:600;letter-spacing:.2px;color:#1c1c26;margin-bottom:24px}
.qxw-word b{color:#C8102E;font-weight:700}
.qxw-welcome{font-size:44px;line-height:1.05;font-weight:800;letter-spacing:-.5px;margin:0 0 10px;color:#141419}
.qxw-sub{font-size:15px;color:#6c6c78;margin:0 0 26px}
.qxw-prog{width:212px;height:5px;border-radius:4px;background:#e9dfe2;overflow:hidden;position:relative;margin-bottom:26px}
.qxw-fill{position:absolute;top:0;height:100%;width:42%;border-radius:4px;
  background:linear-gradient(90deg,#e64a5a,#C8102E);animation:qxw-slide 1.5s cubic-bezier(.5,0,.4,1) infinite}
@keyframes qxw-slide{0%{left:-45%}100%{left:100%}}
.qxw-tagline{font-size:11px;letter-spacing:2.6px;text-transform:uppercase;color:#877a83}

/* couleurs de texte garanties AU-DESSUS du theme app (specificite + !important) */
.qxw .qxw-word{color:#1c1c26 !important}
.qxw .qxw-word b{color:#C8102E !important}
.qxw .qxw-welcome{color:#141419 !important}
.qxw .qxw-sub{color:#6c6c78 !important}
.qxw .qxw-tagline{color:#877a83 !important}

@media (max-width:640px){.qxw-welcome{font-size:34px}.qxw-mark{width:62px;height:62px}}
