/* Splash repris du player Pika Aero. */
      #loading {
        position: fixed;
        inset: 0;
        z-index: 9999;
        display: grid;
        place-items: center;
        gap: 18px;
        grid-auto-flow: row;
        align-content: center;
        background: oklch(0.975 0.003 250);
        font-family: system-ui, -apple-system, "Segoe UI", sans-serif;
      }
      .splash-mark {
        display: grid;
        place-items: center;
        width: 72px;
        height: 72px;
        border-radius: 20px;
        background: #fff;
        box-shadow: 0 8px 28px oklch(0.2 0.02 255 / 0.10);
        animation: splash-rise 0.5s cubic-bezier(0.22, 1, 0.36, 1) both;
      }
      .splash-mark svg {
        width: 44px;
        height: auto;
        /* Le tracé se dessine, puis se remplit. */
        animation: splash-draw 0.85s ease-out both 0.1s;
      }
      .splash-name {
        font-size: 14px;
        font-weight: 600;
        line-height: 1.5;
        letter-spacing: -0.01em;
        color: oklch(0.24 0.02 255);
        animation: splash-fade 0.5s ease-out both 0.35s;
      }
      .splash-bar {
        width: 96px;
        height: 3px;
        border-radius: 2px;
        overflow: hidden;
        background: oklch(0.91 0.005 255);
        animation: splash-fade 0.5s ease-out both 0.45s;
      }
      .splash-bar span {
        display: block;
        width: 40%;
        height: 100%;
        border-radius: 2px;
        background: linear-gradient(90deg, #6C41E9, #2AC5E9);
        animation: splash-slide 1.1s ease-in-out infinite;
      }
      #loading.is-done {
        opacity: 0;
        pointer-events: none;
        transition: opacity 0.28s ease-out;
      }
      @keyframes splash-rise {
        from { opacity: 0; transform: translateY(8px) scale(0.94); }
        to   { opacity: 1; transform: none; }
      }
      @keyframes splash-draw {
        from { stroke-dashoffset: 300; fill-opacity: 0; }
        35%  { fill-opacity: 0.15; }
        to   { stroke-dashoffset: 0; fill-opacity: 1; }
      }
      @keyframes splash-fade {
        from { opacity: 0; transform: translateY(4px); }
        to   { opacity: 1; transform: none; }
      }
      @keyframes splash-slide {
        0%   { transform: translateX(-100%); }
        100% { transform: translateX(250%); }
      }
      @media (prefers-reduced-motion: reduce) {
        .splash-mark,
        .splash-mark svg,
        .splash-name,
        .splash-bar,
        .splash-error-title,
          .splash-bar span { animation-duration: 2.4s; }
      }
      @media (prefers-color-scheme: dark) {
        #loading { background: oklch(0.975 0.003 250); }
      }
