/* Overlay loader (css pris du site https://css-loaders.com/)*/ #loader-overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: linear-gradient( rgba(10, 20, 60, 0.2), rgba(0, 0, 0, 0.4) ); display: flex; flex-direction: column; align-items: center; justify-content: center; z-index: 9999; font-family: 'Roboto', sans-serif; opacity: 0; backdrop-filter: blur(0px); pointer-events: none; transition: opacity 0.5s ease, backdrop-filter 0.5s ease; } #loader-overlay.active { opacity: 1; backdrop-filter: blur(3px); pointer-events: all; } #loader-overlay.hidden { display: none; } /* Spinner wrapper (fade/slide) */ .loader-spin-wrap { opacity: 0; transform: translateY(10px); transition: opacity 0.5s ease, transform 0.5s ease; transition-delay: 0.5s; /* apparaît après 0.5s */ } #loader-overlay.active .loader-spin-wrap { opacity: 1; transform: translateY(0); } /* Spinner circulaire */ .loader-spin { width: 50px; aspect-ratio: 1; border-radius: 50%; mask:1; background: radial-gradient(farthest-side,darkblue 94%,transparent) top/8px 8px no-repeat, conic-gradient(transparent 30%,darkblue); -webkit-mask: radial-gradient(farthest-side,transparent calc(100% - 8px),#000 0); animation: l13 1s infinite linear; } @keyframes l13 { 100% { transform: rotate(1turn); } } /* Erreur */ #error-message { display: none; color: red; font-weight: bold; text-align: center; margin-top: 20px; white-space: pre-line; }